2

Debian または Ubuntu を実行しているコンピューターを使用しています。

デスクトップ コンピューター (Xubuntu 14.04 を実行) の現在の構成では、${HOME}/.local/lib/python2.7/site-packages[^1] が/usr/lib/python2.7/dist-packages[^2] の後に表示されsys.pathます。

私が使用している他のコンピューターでは逆であり、後者は私にとって望ましい動作です。ローカルにインストールされたパッケージがシステム全体にインストールされたパッケージよりも優先されるようにしたいのです。

デスクトップ コンピューターの構成の微調整がどこから来たのかを知るにはどうすればよいですか?

*.pthシステムで見つけたすべてのファイルを調べて、その内容を理解しようとする必要がありますか?

[^1]: python setup.py --usergo経由でインストールされたパッケージの場所

[^2]: 経由でインストールされたパッケージのapt-get install場所

アップデート:

私の質問はHow does python load the all the values in sys.path? に関連しているようです。

この回答により、この strace トリックを試すようになり、最初に開いた.pthファイルに/usr/local/lib/python2.7/dist-packages/easy-install.pth次のコードが含まれていることがわかりました。

import sys; sys.__plen = len(sys.path)
./cutadapt-1.3-py2.7-linux-x86_64.egg
./DendroPy-3.12.0-py2.7.egg
./pylint-1.4.0-py2.7.egg
./astroid-1.3.2-py2.7.egg
/usr/lib/python2.7/dist-packages
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)

/usr/lib/python2.7/dist-packages行を削除すると/usr/lib/python2.7/dist-packages、 が逆行しsys.path、 の後に表示され${HOME}/.local/lib/python2.7/site-packagesます。

.pth手動でファイルを編集していないことは確かです。したがって、これは、 を使用してルートとしてインストールした Python モジュールの結果である可能性があると思いますeasy-install。どれ?

内のファイルとディレクトリの変更時刻から、 がと の 2 つのディレクトリと同じ日に変更されている/usr/local/lib/python2.7/dist-packages/ことがわかります。easy-install.pthastroid-1.3.2-py2.7.eggpylint-1.4.0-py2.7.egg

/usr/local/lib/python2.7/dist-packages次のステップは、これらのモジュールを にインストールするために を早期に挿入する必要がある/usr/lib/python2.7/dist-packages理由を調査することですsys.path

4

0 に答える 0