Не удалось импортировать модули python только для определенного пользователя

Я пытался понять это целую вечность.

Когда я запускаю определенные программы на основе python, они будут терпеть крах, говоря, что определенный модуль не может быть импортирован, хотя он фактически установлен и должен быть импортируемым. Например:

  • pip3 будет сбой с ImportError: cannot import name 'HTTPSHandler
  • python2 speedtest-cli ImportError: No module named expat; use SimpleXMLTreeBuilder instead с ImportError: No module named expat; use SimpleXMLTreeBuilder instead ImportError: No module named expat; use SimpleXMLTreeBuilder instead
  • python3 speedtest-cli ImportError: cannot import name 'HTTPSConnection' с ImportError: cannot import name 'HTTPSConnection'
  • virtualenv -p python3 myenv с OSError: Command /home/myuser/myenv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1

Что странно, так это то, что если я запускаю эти программы с помощью sudo или даже как новый обычный пользователь, они будут работать нормально. Это происходит только для этого конкретного пользователя.

Я попробовал очистить .cache , .pip и .python-eggs в домашнем каталоге, запустив chmod a+rx -R /usr/ сравнивая все исполняемые файлы python с which с рабочими пользователями, но ничего не помогает. Список python sys.path также идентичен.

Машина – сервер Ubuntu 14.04 x64.

ОБНОВИТЬ:

Думаю, я это исправил … Не знаю, как это сделать. Я сделал все, что я перечислил в этом вопросе, и перезагрузил машину.

ДРУГОЕ ОБНОВЛЕНИЕ:

Я узнал, что вызвало это. Я export LD_LIBRARY_PATH="/usr/lib/plexmediaserver" в мой .bashrc . Может кто-нибудь объяснить, пожалуйста, почему это произойдет?

Нет результатов, если я делаю echo $LD_LIBRARY_PATH . Но если я запускаю export LD_LIBRARY_PATH="/usr/lib/plexmediaserver" он прерывает импорт некоторых питонов.

Решаемые.

Я export LD_LIBRARY_PATH="/usr/lib/plexmediaserver" в мой .bashrc .

/usr/lib/plexmediaserver было много динамических libssl.so.1.0.0 , включая libssl.so.1.0.0 и libexpat.so.1 . Таким образом, они загружались вместо них из /usr/lib и вызывали проблемы. Эта проблема не имеет ничего общего с python, это также вызовет проблемы для любой другой программы, которая будет ретранслировать эти библиотеки.

@slm предложил хороший способ отладки таких случаев с помощью strace . Я в своем случае сделал strace speedtest 2>&1 | grep expat | less strace speedtest 2>&1 | grep expat | less strace speedtest 2>&1 | grep expat | less и найдено подтверждение загрузки неправильной библиотеки – open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7 .

Я видел много людей в Интернете, отправляющих подобные вопросы без каких-либо решений. Так что, надеюсь, это поможет кому-то.