如何在virtualenv中设置环境变量

居特利:

如果我有像这样激活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包装器来执行此操作)。

georgexsh:

在写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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章