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 --user
go経由でインストールされたパッケージの場所
[^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.pth
astroid-1.3.2-py2.7.egg
pylint-1.4.0-py2.7.egg
/usr/local/lib/python2.7/dist-packages
次のステップは、これらのモジュールを にインストールするために を早期に挿入する必要がある/usr/lib/python2.7/dist-packages
理由を調査することですsys.path
。