首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python脚本激活virtualenv

使用Python脚本激活virtualenv
EN

Stack Overflow用户
提问于 2011-08-04 22:27:27
回答 9查看 120.5K关注 0票数 104

我想从Python脚本激活一个virtualenv实例。

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

我只想激活virtualenv并返回到shell,就像bin/activate一样。

如下所示:

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

这个是可能的吗?

相关:

EN

回答 9

Stack Overflow用户

发布于 2013-02-10 06:38:07

如果您想要在virtualenv下运行Python子进程,可以通过使用virtualenv的/bin/目录中的Python解释器运行脚本来实现:

import subprocess

# 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解释器下而不是在子进程下激活virtualenv,则可以使用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))
票数 95
EN

Stack Overflow用户

发布于 2015-05-30 11:23:28

在virtualenv的解释器下运行脚本的最简单的解决方案是将默认的shebang行替换为您的virtualenv的解释器的路径,如下所示:

#!/path/to/project/venv/bin/python

使脚本可执行:

chmod u+x script.py

运行脚本:

./script.py

瞧!

票数 58
EN

Stack Overflow用户

发布于 2011-08-04 23:57:57

事实证明,是的,问题并不简单,但解决方案却很简单。

首先,我必须创建一个shell脚本来包装"source“命令。也就是说,我使用了“。相反,因为我读到过Bash脚本使用它比源代码更好。

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

然后,从我的Python脚本中,我可以简单地执行以下操作:

import os
os.system('/bin/bash --rcfile /path/to/myscript.sh')

整个技巧在于--rcfile参数。

当Python解释器退出时,它将当前shell留在激活的环境中。

赢!

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6943208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档