我正在使用 Python 3.4,并创建了一个 pyvenv,我希望从 python 进程中激活它。使用 virtualenv,我曾经使用 activate_this.py
,但这似乎在 pyvenv 中消失了。
现在有没有一种简单的方法可以有效地将当前解释器更改为 virtualenv 解释器?我可能会弄乱 PATH(这是 activate_this.py
所做的),但我想要一种更简单、更稳定的方式。
这是在 wsgi.py 中使用的。
最佳答案
pyvenv
和 venv
模块不支持这个开箱即用。第三方virtualenv
包does support this using activate_this.py
, 但是 that feature was not included in the built-in venv
module .
你可以试试借activate_this.py
来自 virtualenv
基于环境;它似乎工作,虽然我不能发誓它会是完美的(venv
/pyvenv
在启动过程中使用了一些魔法;不清楚是否所有这些都是通过 activate_this.py
复制的)。virtualenv
它的文档对于 Python 3 来说已经过时了(他们声称你使用了 execfile
,它不存在)。 Python 3 兼容的替代方案是:
activator = 'some/path/to/activate_this.py' # Looted from virtualenv; should not require modification, since it's defined relatively
with open(activator) as f:
exec(f.read(), {'__file__': activator})
没有
activate_this.py
确实很神奇,因此您可以手动执行相同的更改而无需从 virtualenv
中掠夺(调整 PATH
、 sys.path
、 sys.prefix
等),但在这种情况下借用会更简单。
关于python-3.x - 如何从 python 中激活 pyvenv vitrualenv? (activate_this.py 被删除了?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462582/