配置Python以使用站点包的其他位置

时间:2011-10-26 10:22:22

标签: python packages

有没有办法告诉Python有关其他site-packages位置而不修改现有脚本?

在我的CentOS 5.5服务器上,我安装了一个安装在/opt/python2.7.2的Python 2.7,site-packages处有一个/opt/python2.7.2/lib/python2.7/site-packages文件夹。

原因是我不想打扰5.5发行版附带的现有Python 2.4安装。

然而,第三方Python应用程序还在site-packages添加了/usr/local/lib/python2.7/site-packages文件夹,并在该位置安装了自己。

这部分是我的错,因为我在安装之前没有调整应用程序PREFIX中的Makefile,但是现在我无能为力。

我知道我可以这样做:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages")

然而,这将涉及我追踪每个脚本并添加上述内容,如果将来有更新,这是不理想的。

为了解决这个问题,我在/opt/python2.7.2/lib/python2.7/site-packages创建了一个符号链接到第三方应用程序的位置:

ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp

这似乎工作正常,但我想知道是否有更好的方法?

2 个答案:

答案 0 :(得分:42)

您可以使用Site-specific configuration hook

  

“路径配置文件是一个名称格式为name.pth的文件,存在于上述四个目录之一中;其内容是要添加到{{1}的其他项目(每行一个) }“。

在您的情况下,您应该能够通过简单地放入包含要包含的目录路径的sys.path文件来实现您想要的目标:

.pth

答案 1 :(得分:4)

您可以使用包装器脚本替换python可执行文件,该脚本将添加的安装路径附加到PYTHONPATH。但这是一个kludge。

但是我会尝试修复附加组件的安装,以便它正确地进入site-packages目录。