特定のユーザーにのみPythonモジュールをインポートできません。

特定のユーザーにのみPythonモジュールをインポートできません。

私は長年これを理解しようとしてきました。

特定のPythonプログラムを実行すると、実際にインストールしてインポートできる必要があるモジュールをインポートできないというメッセージがクラッシュします。たとえば、

  • pip3衝突するImportError: cannot import name 'HTTPSHandler
  • python2 speedtest-cliそしてImportError: No module named expat; use SimpleXMLTreeBuilder instead
  • python3 speedtest-cliそして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新しい一般ユーザーとして実行したりすると正常に実行されることです。これはその特定のユーザーにのみ発生します。

私は仕事ユーザーと一緒にホームディレクトリからすべてのPython実行可能ファイルを.cache消去して実行.pipしようとしましたが、私は役に立ちませんでした。 Pythonリストにも当てはまります。.python-eggschmod a+rx -R /usr/whichsys.path

マシンはUbuntu Server 14.04 x64です。

修正する:

問題を修正したようですが…どうすればいいのかわかりません。この質問に記載されているすべてのタスクを実行し、コンピュータを再起動しました。

別のアップデート:

私はその原因を知っています。私はexport LD_LIBRARY_PATH="/usr/lib/plexmediaserver"私の中にいます.bashrc。なぜこれが起こるのか説明できますか?

私がこれを行うと、何も起こりませんecho $LD_LIBRARY_PATH。ただし、実行するとexport LD_LIBRARY_PATH="/usr/lib/plexmediaserver"一部のPythonインポートが中断されます。

答え1

解決しました。

私はexport LD_LIBRARY_PATH="/usr/lib/plexmediaserver"私の中にいます.bashrc

/usr/lib/plexmediaserverlibssl.so.1.0.0とを含む多くの動的ライブラリがあるため、libexpat.so.1fromの代わりにロードされ、/usr/lib問題が発生します。この問題は実際にはPythonとは関係がなく、これらのライブラリに依存する他のプログラムにも同じ問題を引き起こします。

@slmはstrace。私の場合、strace speedtest 2>&1 | grep expat | less間違ったライブラリをロードしたという証拠が見つかりましたopen("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7

インターネットに似たような質問をする人はたくさん見ましたが、まったく解決策はありませんでした。これが誰かに役立つことを願っています。

関連情報