Crasheos con Kodi, Linux y Python 3: Solucionando los dolores de cabeza

Actualización: Parece que es necesario descartar de plano las rutas del sistema.

En el mundo de Kodi, la transición de Python 2 a Python 3 ha dejado a muchos desarrolladores de add-ons rascándose la cabeza. Si eres usuario de Kodi en Linux, es probable que hayas experimentado fallos aparentemente aleatorios y recurrentes en tu plataforma. Pero, ¿cuál es la causa de estos problemas?

El cambio a Python 3
Kodi dio un gran paso al cambiar el ya obsoleto Python 2 a la nueva y mejorada versión 3. Sin embargo, esta migración no solo trajo mejoras, sino también dolores de cabeza, especialmente para los usuarios de Linux.

Las rutas de sys.path
La migración de Kodi a Python 3 implicó una transición importante, sobretodo en Linux: Kodi comenzó a utilizar el intérprete de Python 3 del sistema operativo (/usr/bin/python3) y, malamente, también sus módulos.

Cuando en Python se busca un módulo, se busca en el orden de las rutas presentes en la variable sys.path. Por defecto, el Python 3 de Linux agrega al principio las rutas de las bibliotecas del sistema operativo, y luego, Kodi agrega sus propias rutas:
Python:
Por favor, Acceder o Registrarse para ver el contenido
Esto deriva en que se utilcen primero los módulos instalados en el sistema operativo antes que los de Kodi mismo. La mezcla entre módulos de Linux y de Kodi conduce a fallos y crasheos, muchas veces sin explicación aparente.

Las soluciones
Entonces, ¿cómo podemos solucionar este problema? Existen varias soluciones, aunque algunas pueden ser un tanto forzadas, mientras que otras dependen de los desarrolladores de add-ons..

Utilizar una versión diferente de Python con Kodi.
Esto separa las bibliotecas del sistema de las de Kodi y puede resolver el problema para todos los add-ons. Puede hacerse siguiendo este tutorial.
Sin embargo, esto requiere parchar el binario de Kodi, lo que tiene sus propios problemas.

Modificar la variable sys.path (desarrolladores de add-ons)
Para los desarrolladores de add-ons, un posible parche independiente de la versión de Python es modificar la variable sys.path, eliminando las rutas de paquetes del sistema operativo.

Código de ejemplo, se debe colocar al principio de su punto de entrada (launcher, default, plugin, addon...):
Python:
Por favor, Acceder o Registrarse para ver el contenido
Sin embargo, hay que tener en cuenta que este método podría saltarse alguna biblioteca de manera inesperada, aunque la posibilidad es mínima.

El llamado a Team Kodi
La solución definitiva está en manos del equipo de desarrollo de Kodi. La corrección requeriría modificar el sys.path de manera global para descartar las rutas de los paquetes del sistema operativo, evitando así cualquier conflicto. Lamentablemente, tenemos poco control sobre esta solución, por lo que la paciencia es fundamental.

De parte del equipo de desarrollo de Alfa, queremos agradecer a la comunidad por su apoyo y paciencia en este proceso de mejora continua. Seguimos trabajando para mejorar la experiencia de Alfa en todas las plataformas, y su retroalimentación es invaluable.

Esperamos que esta información les sea de ayuda.
 
Última edición: