有没有办法告诉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
这似乎工作正常,但我想知道是否有更好的方法?
答案 0 :(得分:42)
您可以使用Site-specific configuration hook。
“路径配置文件是一个名称格式为
name.pth
的文件,存在于上述四个目录之一中;其内容是要添加到{{1}的其他项目(每行一个) }“。
在您的情况下,您应该能够通过简单地放入包含要包含的目录路径的sys.path
文件来实现您想要的目标:
.pth
答案 1 :(得分:4)
您可以使用包装器脚本替换python可执行文件,该脚本将添加的安装路径附加到PYTHONPATH。但这是一个kludge。
但是我会尝试修复附加组件的安装,以便它正确地进入site-packages目录。