venv / pyvenv中没有activate_this.py文件
我想在一个Python脚本里启动虚拟环境(venv / pyvenv),我知道官方文档上说要运行:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
但是我没有找到activate_this.py这个文件,也不知道怎么创建一个。
我现在用的是Python 3.4.1。你有什么建议吗?
1 个回答
26
正如你所注意到的,pyvenv
或者venv
模块并没有自带activate_this.py
这个文件。不过,如果你需要这个功能,可以从virtualenv
中借用activate_this.py
,然后把它放到指定的位置(也就是virtualenv_path/bin/activate_this.py
),这样就可以使用了。看起来这样做是没问题的。唯一的问题是,virtualenv
的文档对于Python 3来说有点过时(他们提到要用execfile
,但这个在Python 3中是不存在的)。对于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
做的事情并没有什么神奇之处,所以你也可以手动进行相同的设置,比如调整PATH
、sys.path
、sys.prefix
等等,但借用这个文件在这种情况下会简单很多。