No poder importar módulos de Python solo en un usuario específico

No poder importar módulos de Python solo en un usuario específico

He estado tratando de resolver esto durante años.

Cuando ejecuto ciertos programas de Python, fallan diciendo que cierto módulo no se puede importar, mientras que en realidad está instalado y debería ser importable. Por ejemplo:

  • pip3chocaría conImportError: cannot import name 'HTTPSHandler
  • python2 speedtest-cliconImportError: No module named expat; use SimpleXMLTreeBuilder instead
  • python3 speedtest-cliconImportError: cannot import name 'HTTPSConnection'
  • virtualenv -p python3 myenvconOSError: Command /home/myuser/myenv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1

Lo que es extraño es que si ejecuto esos programas con sudoun nuevo usuario común o incluso como nuevo, funcionarían bien. Sucede sólo para ese usuario específico.

Intenté borrar y .cache, en el directorio de inicio, ejecutar comparando todos los ejecutables de Python con los usuarios que trabajan, pero nada ayuda. La lista de Python también es idéntica..pip.python-eggschmod a+rx -R /usr/whichsys.path

La máquina es: Ubuntu Server 14.04 x64.

ACTUALIZAR:

Creo que lo arreglé... Aunque no tengo idea de cómo. Hice todo lo que enumeré en esta pregunta y reinicié la máquina.

OTRA ACTUALIZACIÓN:

Aprendí qué lo causó. Yo tenía export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"en mi .bashrc. ¿Alguien podría explicar, por favor, por qué sucedería esto?

No hay resultados si lo hago echo $LD_LIBRARY_PATH. Pero si lo ejecuto export LD_LIBRARY_PATH="/usr/lib/plexmediaserver", se interrumpen algunas importaciones de Python.

Respuesta1

Resuelto.

Yo tenía export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"en mi .bashrc.

/usr/lib/plexmediaserverTenía muchas bibliotecas dinámicas, incluidas libssl.so.1.0.0y libexpat.so.1. Entonces se cargaron en lugar de los de /usr/liby estaban causando problemas. En realidad, este problema no tiene nada que ver con Python; igualmente causaría problemas a cualquier otro programa que retransmita esas bibliotecas.

@slm sugirió una buena forma de depurar estos casos utilizando strace. En mi caso lo hice strace speedtest 2>&1 | grep expat | lessy encontré pruebas de que se estaba cargando una biblioteca incorrecta: open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7.

He visto a muchas personas en Internet publicar preguntas similares sin ninguna solución. Espero que esto ayude a alguien.

información relacionada