Falha ao importar módulos python apenas em um usuário específico

Falha ao importar módulos python apenas em um usuário específico

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:

  • pip3iria bater comImportError: cannot import name 'HTTPSHandler
  • python2 speedtest-clicomImportError: No module named expat; use SimpleXMLTreeBuilder instead
  • python3 speedtest-clicomImportError: cannot import name 'HTTPSConnection'
  • virtualenv -p python3 myenvcomOSError: 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 sudoou 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-eggschmod a+rx -R /usr/whichsys.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/plexmediaservertinha muitas bibliotecas dinâmicas, incluindo libssl.so.1.0.0e libexpat.so.1. Então, eles foram carregados em vez dos de /usr/libe 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 | lesse 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.

informação relacionada