如何通过shell脚本激活python虚拟环境

时间:2013-12-05 05:10:50

标签: python shell ubuntu virtualenv

我写了一个shell脚本。

    source ve/bin/activate

当我使用命令运行脚本时,将其保存为activate_shell.sh。

    bash activate_shell.sh

正在运行脚本时没有错误,但虚拟环境未被激活。

2 个答案:

答案 0 :(得分:8)

您的激活脚本路径ve/bin/activate是相对的。该脚本只能在一个目录中运行。但问题不在这里。

bin/activate做什么?它修改了运行它的shell 。这就是为什么你必须source而不是作为常规程序调用的原因。

您编写的脚本启动了自己的shell(bash)副本,激活其中的虚拟环境,然后退出,破坏刚刚激活的环境。如果您的脚本在获取bin/activate之后调用了Python,那么它将来自虚拟环境中的Python,而不是系统中的Python。

如果您想要一个简单易用的命令来激活virtualenv,请定义一个 shell函数:

ve() { source $1/bin/activate; }

(是的,在shell提示符下键入上面的行。)

然后键入ve foo,名为foo的virtualenv将在当前shell中激活,前提是您位于正确的目录中。

如果您需要应对大量的虚拟演示,请查看virtualenvwrapper

答案 1 :(得分:4)

使用脚本运行source命令会失败,因为bash activate_shell.sh会创建另一个shell。 active命令的所有修改都将修改新创建的shell,该shell在完成activate_shell.sh脚本后终止。

一种简单的方法是为您的.bash_profile添加别名:

alias activate_shell="source ve/bin/activate"
相关问题