venv / pyvenv中没有activate_this.py文件

29 投票
1 回答
25197 浏览
提问于 2025-04-18 15:13

我想在一个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做的事情并没有什么神奇之处,所以你也可以手动进行相同的设置,比如调整PATHsys.pathsys.prefix等等,但借用这个文件在这种情况下会简单很多。

撰写回答