私は長年これを理解しようとしてきました。
特定の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-eggs
chmod a+rx -R /usr/
which
sys.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/plexmediaserver
libssl.so.1.0.0
とを含む多くの動的ライブラリがあるため、libexpat.so.1
fromの代わりにロードされ、/usr/lib
問題が発生します。この問題は実際にはPythonとは関係がなく、これらのライブラリに依存する他のプログラムにも同じ問題を引き起こします。
@slmはstrace
。私の場合、strace speedtest 2>&1 | grep expat | less
間違ったライブラリをロードしたという証拠が見つかりましたopen("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7
。
インターネットに似たような質問をする人はたくさん見ましたが、まったく解決策はありませんでした。これが誰かに役立つことを願っています。