Python 3.x 如何从python中激活pyvenv vitrualenv?(是否删除了此.py?)

Python 3.x 如何从python中激活pyvenv vitrualenv?(是否删除了此.py?),python-3.x,mod-wsgi,Python 3.x,Mod Wsgi,我使用的是Python3.4,在创建了pyvenv之后,我希望在Python进程中激活它。对于virtualenv,我曾经使用激活这个.py,但在pyvenv中似乎已经没有了 现在是否有一种简单的方法可以有效地将当前解释器更改为virtualenv解释器?我可能会弄乱路径(这就是activate\u this.py所做的),但我希望使用更简单、更稳定的方法 这是在wsgi.py中使用的。pyvenv,venv模块不支持开箱即用。第三方virtualenv包,但是 您可以尝试从基于virtuale

我使用的是Python3.4,在创建了pyvenv之后,我希望在Python进程中激活它。对于virtualenv,我曾经使用
激活这个.py,但在pyvenv中似乎已经没有了

现在是否有一种简单的方法可以有效地将当前解释器更改为virtualenv解释器?我可能会弄乱路径(这就是
activate\u this.py
所做的),但我希望使用更简单、更稳定的方法


这是在wsgi.py中使用的。

pyvenv
venv
模块不支持开箱即用。第三方
virtualenv
包,但是

您可以尝试从基于
virtualenv
的环境中借用
activate_this.py
的副本;它似乎很管用,但我不能保证它是完美的(
venv
/
pyvenv
在启动过程中使用了一些魔法;不清楚是否所有这些都是通过
activate\u this.py
复制的)

它的
virtualenv
文档对于python3来说已经过时了(他们声称您使用的是
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\u this.py
所做的任何事情都不是魔法,因此您可以手动执行相同的更改,而无需从
virtualenv
(调整
PATH
sys.PATH
sys.prefix
,等等),但在这种情况下,借用会让事情变得更简单。

我在
virtualenv
本身中使用了一种不同的方法:

# the current Python interpreter is not from the virtual environment
file = __file__
if file.endswith('.pyc'):
    file = file[:-1]
venv_executable = PROJECT_DIR / 'venv' / 'bin' / 'python'
popen = subprocess.Popen([venv_executable, file] + sys.argv[1:])
raise SystemExit(popen.wait())

是的,激活脚本取决于您的平台:而且,在Python进程中激活也不完全有意义。您只能激活一个virtualenv,然后再使用属于该virtualenv的Python解释器。我想如果您在这里阅读,您会明白为什么它有意义:这是我正在寻找的功能,它似乎在pyvenv中消失了。@ChrisCooper上面的链接已断开。哪个版本的virtualenv?我得到了12.1.0和
activate\u这个.py是为我准备的,或者我没有从你的问题中得到正确的答案。“Python 3.x还没有太多使用”这肯定不是真的。谢谢,我从一个似乎没有的地方抢走了它。只需使用
sys.exit
,而不是使用SystemExit