如果我有像这样激活virtualenv的python脚本:
#!/path/to/venv/bin/python
如何在不修改脚本的情况下为此脚本设置变量?
我希望此环境变量对于使用此virtualenv的所有脚本均有效。
这意味着修改此脚本不是解决方案,因为有20个脚本,而我不想修改20个脚本。
围绕python脚本编写一个shell wrapper-script可以,但是我想避免这种情况。
过去,我认为sitecustomize.py
可以将自定义代码用于启动代码。但是Ubuntu(AFAIK是唯一执行此操作的发行版)带有自己的sitecustomize.py文件,其作用是不会调用我的sitecustomize.py。参见https://bugs.launchpad.net/ubuntu/+source/python2.5/+bug/197219
这是我要使用virtualenv的一些方法:
(我再考虑过一次。我想它设置变量不是python或virtualenv的工作。我需要一种统一的方法来设置环境变量。在我的情况下,我想不使用Shell包装器来执行此操作)。
在写sitecustomize.py
文件和更改bin/python
所有文件都是可行的解决方案时,我建议另一种方法,不涉及直接在virutalenv内部更改内容,只需安装一个.pth
文件即可:
./venv/lib/python2.7/site-packages/_set_envs.pth
内容:
import os; os.environ['FOO'] = 'bar'
测试:
$ ./venv/bin/python -c "import os; print os.getenv('FOO')"
bar
诀窍是,Python会加载每个.pth
文件在启动时,如果有一个行开头import
,这条线将得到执行,允许注入任意代码。
优点是,您只需编写一个python软件包即可使用setuptools 安装此.pth
文件,并将其安装到要更改的virtualenv中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句