Eu tenho tentado descobrir isso há muito tempo.
Quando executo certos programas python, eles travam, dizendo que determinado módulo não pode ser importado, embora esteja realmente instalado e deva ser importável. Por exemplo:
pip3
iria bater comImportError: cannot import name 'HTTPSHandler
python2 speedtest-cli
comImportError: No module named expat; use SimpleXMLTreeBuilder instead
python3 speedtest-cli
comImportError: cannot import name 'HTTPSConnection'
virtualenv -p python3 myenv
comOSError: Command /home/myuser/myenv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1
O que é bizarro é que se eu executar esses programas com sudo
ou mesmo como um novo usuário comum, eles funcionarão perfeitamente. Isso acontece apenas para esse usuário específico.
Tentei limpar e .cache
, no diretório inicial, comparar todos os executáveis python com usuários ativos, mas nada ajuda. lista python também é idêntica..pip
.python-eggs
chmod a+rx -R /usr/
which
sys.path
A máquina é - Ubuntu Server 14.04 x64.
ATUALIZAR:
Acho que consertei... Não faço ideia de como. Fiz tudo o que listei nesta pergunta e reiniciei a máquina.
OUTRA ATUALIZAÇÃO:
Eu aprendi o que causou isso. eu tinha export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
no meu .bashrc
. Alguém poderia explicar, por favor, por que isso aconteceria?
Não há resultados se eu fizer isso echo $LD_LIBRARY_PATH
. Mas se eu executar, export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
algumas importações de python serão interrompidas.
Responder1
Resolvido.
eu tinha export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
no meu .bashrc
.
/usr/lib/plexmediaserver
tinha muitas bibliotecas dinâmicas, incluindo libssl.so.1.0.0
e libexpat.so.1
. Então, eles foram carregados em vez dos de /usr/lib
e estavam causando problemas. Na verdade, esse problema não tem nada a ver com python; na verdade, causaria problemas para qualquer outro programa que retransmitisse essas bibliotecas.
@slm sugeriu uma boa maneira de depurar esses casos usando strace
. No meu caso, fiz strace speedtest 2>&1 | grep expat | less
e encontrei provas de que a biblioteca errada estava sendo carregada - open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7
.
Já vi muitas pessoas na internet postando perguntas semelhantes sem nenhuma solução. Então, espero que isso ajude alguém.