如果我有像这样激活virtualenv的python脚本:
#!/path/to/venv/bin/python
如何在不修改此脚本的情况下设置此脚本的变量?
我希望此环境变量对于使用此virtualenv的所有脚本都处于活动状态。
这意味着修改这个脚本不是一个解决方案,因为有20个脚本,我不想修改20个脚本。
在python脚本周围编写一个shell包装器脚本是可行的,但是我想避免这种情况。
在过去,我认为定制的sitecustomize.py
可以用于启动代码。但是Ubuntu(AFAIK是唯一一个这样做的发行版)自带了自己的sitecommize.py文件,其效果是不会调用my sitecommize.py。见https://bugs.launchpad.net/ubuntu/+source/python2.5/+bug/197219
以下是我想如何使用virtualenv的一些方法:
(我又考虑过了。我想设置变量不是python或virtualenv的工作。我需要一个统一的方法来设置环境变量。在我的例子中,我希望不使用外壳包装器。
有点老套,但应该管用。
python
链接bin
重命名为python.lnk
在
bin
文件夹中创建如下文件python
使其可执行
chmod +x python
如果你运行一个脚本
具体如下:
./myscript.py
它打印出来:
Virtualenv variable TEST="It works!"
根据我的尝试,如果在虚拟环境中创建一个
sitecustomize.py
文件,它将优先于安装在/usr/lib/python2.7
目录中的全局sitecustomize.py
。以下是我所做的:在虚拟环境中创建
sitecustomize.py
验证从虚拟环境运行Python二进制文件时是否导入并执行了它
只是为了验证即使没有显式导入
sitecustomize
,也设置了FOO
:在编写
sitecustomize.py
文件和更改bin/python
这些都是可行的解决方案时,我建议使用另一种方法,这种方法不需要直接更改virutalenv中的内容,只需安装.pth
文件即可:内容:
测试:
诀窍是,python将加载每个
.pth
文件on startup,如果有以import
,this line will be get executed开头的行,则允许注入任意代码。优点是,您可以简单地将python包编写到install this ^{} file with setuptools ,安装到您想要更改的virtualenv。
相关问题 更多 >
编程相关推荐