2

我正在使用运行 Debian 或 Ubuntu 的计算机。

在我的台式机(运行 Xubuntu 14.04)的当前配置中,${HOME}/.local/lib/python2.7/site-packages[^1] 出现/usr/lib/python2.7/dist-packagessys.path.

在我使用的其他计算机中情况正好相反,后者是我想要的行为:我希望我本地安装的软件包优于系统范围内安装的软件包。

如何确定台式计算机中的配置调整来自何处?

我是否必须检查*.pth我在系统中找到的每个文件并尝试了解它指定的内容?

[^1]: 通过python setup.py --usergo安装的包

[^2]: 安装包apt-get install似乎去哪里

更新:

我的问题似乎与python 如何加载 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文件。所以我想这可能是我以 root 身份使用easy-install. 哪一个?

从里面的文件和目录的修改次数/usr/local/lib/python2.7/dist-packages/可以看出,easy-install.pth同一天修改了两个目录:astroid-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