あるサーバーではライブラリをインポートできますが、別のサーバーではできません。インポートする必要があるライブラリは NFS 経由で共有され、両方のサーバーから到達可能です。
2つのサーバー間でPythonパスが異なることがわかりましたが、Pythonバイナリは同じで、標準のubuntu 16.04リポジトリからインストールされ、$PYTHONPATH
両方のサーバーで設定されていません。
サーバー 1:
$ echo $PYTHONPATH
$ python
>>> import sys; sys.path
['', '/usr/lib/python2.7', '...', '/usr/local/lib/python2.7/dist-packages', '/home/user/app/src/python', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
サーバー 2:
$ echo $PYTHONPATH
$ python
>>> import sys; sys.path
['', '/usr/lib/python2.7', '...', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
同じ動作をサーバー 2 に複製するために、このライブラリが定義されている場所をどのように理解すればよいですか?
興味深い事実は、ライブラリがパス/usr/local/lib
との間に配置されていることです/usr/lib
。
編集: Python バイナリは同じ (同じバージョン 2.7.12、およびチェックサムが一致する) であり、標準の場所にある ubuntu リポジトリからインストールされます/usr/bin/python
。
私はライブラリで遊んだことがsite
ありますが、すべての変数は同じです ( site.ENABLE_USER_SITE
True を返します)。
スクリプト内のパスを操作したり、PYTHONPATH
すべてのサーバーの /etc/profile.d/ で指定したりできることはわかっていますが、違いはどこにあるのか知りたいです。