配置Python使用额外的site-packages位置

49 投票
3 回答
93657 浏览
提问于 2025-04-17 05:02

有没有办法让Python知道额外的site-packages位置,而不需要修改现有的脚本呢?

在我的CentOS 5.5服务器上,我安装了Python 2.7,安装路径是/opt/python2.7.2,而site-packages文件夹在/opt/python2.7.2/lib/python2.7/site-packages

这样做的原因是我不想影响到随5.5版本一起提供的Python 2.4安装。

不过,一个第三方的Python应用程序也在/usr/local/lib/python2.7/site-packages创建了一个site-packages文件夹,并把自己安装在了那里。

这部分是我的错,因为我在安装之前没有调整应用程序的Makefile中的PREFIX,但现在也没什么办法了。

我知道我可以这样做:

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

这样似乎可以正常工作,但我在想有没有更好的办法呢?

3 个回答

0

要改变Python的site-packages路径,可以按照以下步骤操作:

第一步:通过PYTHONUSERBASE环境变量

a. 对于Windows系统

SET PYTHONUSERBASE=<custom-path>

For Example:
SET PYTHONUSERBASE=C:\\DEV\python_repo

第二步:通过--user

在使用pip安装模块或包的时候,像下面这样加上--user

python -m pip install --upgrade pip --user

注意:

  1. 要把上面两个步骤都跟着做,这样才能把site-packages放到你想要的位置。
8

你可以用一个包装脚本来替换掉python的可执行文件,这个脚本会把你添加的安装路径加到PYTHONPATH里。不过,这种做法有点不太靠谱。

我建议你还是去修复一下这个插件的安装方式,让它能正确地放到site-packages目录里。

54

你可以使用特定于站点的配置钩子

“路径配置文件是一个文件,文件名的格式是name.pth,并且它存在于上面提到的四个目录中的一个;它的内容是要添加到sys.path中的额外项目(每行一个)。”

在你的情况下,你只需要放一个包含要添加的目录路径的.pth文件就可以实现你想要的效果:

[root@home]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth

撰写回答