Python 3.x 如何从python中激活pyvenv vitrualenv?(是否删除了此.py?)
我使用的是Python3.4,在创建了pyvenv之后,我希望在Python进程中激活它。对于virtualenv,我曾经使用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
激活这个.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