1

あるサーバーではライブラリをインポートできますが、別のサーバーではできません。インポートする必要があるライブラリは 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_SITETrue を返します)。
スクリプト内のパスを操作したり、PYTHONPATHすべてのサーバーの /etc/profile.d/ で指定したりできることはわかっていますが、違いはどこにあるのか知りたいです。

4

2 に答える 2