配置Python使用额外的site-packages位置
有没有办法让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 个回答
要改变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
注意:
- 要把上面两个步骤都跟着做,这样才能把
site-packages
放到你想要的位置。
你可以用一个包装脚本来替换掉python的可执行文件,这个脚本会把你添加的安装路径加到PYTHONPATH里。不过,这种做法有点不太靠谱。
我建议你还是去修复一下这个插件的安装方式,让它能正确地放到site-packages目录里。
你可以使用特定于站点的配置钩子。
“路径配置文件是一个文件,文件名的格式是
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