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:
pip3
chocaría conImportError: cannot import name 'HTTPSHandler
python2 speedtest-cli
conImportError: No module named expat; use SimpleXMLTreeBuilder instead
python3 speedtest-cli
conImportError: cannot import name 'HTTPSConnection'
virtualenv -p python3 myenv
conOSError: 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 sudo
un 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-eggs
chmod a+rx -R /usr/
which
sys.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/plexmediaserver
Tenía muchas bibliotecas dinámicas, incluidas libssl.so.1.0.0
y libexpat.so.1
. Entonces se cargaron en lugar de los de /usr/lib
y 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 | less
y 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.