如何用python脚本激活虚拟环境?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (225)

我想从python脚本中激活一个虚拟化实例。

我知道这很容易,但是我看到的所有示例都使用它在env中运行命令,然后关闭子进程。

我想要的只是激活虚拟主机并返回到shell,就像bin/activate那样。

就像这样:

$me: my-script.py -d env-name
$(env-name)me: 

这有可能吗?

提问于
用户回答回答于

首先,我必须创建一个shell脚本来包装“source”命令。这就是说,我使用了“.”。

#!/bin/bash
. /path/to/env/bin/activate

然后,从我的python脚本中,我可以这样做:

import os
os.system('/bin/bash --rcfile /path/to/myscript.sh')
用户回答回答于

如果您想在虚拟环境下运行Python子进程,可以通过使用驻留在虚拟化/bin/目录中的python解释器来运行脚本:

# path to a python interpreter that runs any python script
# under the virtualenv /path/to/virtualenv/
python_bin = "/path/to/virtualenv/bin/python"

# path to the script that must run under the virtualenv
script_file = "must/run/under/virtualenv/script.py"

subprocess.Popen([python_bin, script_file])

但是,如果您想要在当前python解释器下而不是在子进程下激活虚拟化env,则可以使用activate_this.py剧本:

# doing execfile() on this file will alter the current interpreter's
# environment so you can import libraries in the virtualenv
activate_this_file = "/path/to/virtualenv/bin/activate_this.py"

execfile(activate_this_file, dict(__file__=activate_this_file))

扫码关注云+社区

领取腾讯云代金券