在执行bashscript时如何进入Python virtualenv?

时间:2016-11-30 17:31:00

标签: python bash virtualenv

如果定义了在bash脚本中使用哪个版本的python,那么它将是

export PYTHON = "/path/python/python-3.5.1/bin/python"

但是对于Python virtualenv,可以在命令行中执行这些命令

cd /path/pathto/virtualenv
source activate
cd another_directory

如何在bash脚本中“输入”Python virtualenv?这里的标准方法是什么?

3 个答案:

答案 0 :(得分:6)

我们必须在这里区分两种情况:

  1. 你想在你的bash脚本中使用/调用python(或基于python的工具),但是python或那些工具应该从virtualenv中获取并运行
  2. 你想要一个脚本,除其他外,让你调用它的shell进入virtualenv,这样你就可以在virtualenv中以交互方式调用python(或基于python的工具)
  3. 案例1:在脚本中使用virtualenv

      

    如何进入" bash脚本中的Python virtualenv?

    就像在交互式bash命令行上一样:

    source /path/to/the/virtual_env/bin/python
    
      

    这里的标准方法是什么?

    标准方法 在bash脚本中输入 virtualenv。相反,调用python和/或您希望按其完整路径使用的基于python的命令。为了使这更容易,重复性更低,您可以使用别名和变量。

    案例2:通过调用脚本

    在交互式bash会话中激活virtualenv

    已经有这样的剧本了。它被称为activate,它位于virtualenv的bin目录中。你必须source而不是像普通命令一样调用它。只有这样它才能在同一个会话中运行,而不是在子shell中运行,因此只有这样才能修改由于子脚本在脚本末尾终止而不会丢失的会话。

    所以就这样做:

    source /path/to/the/virtual_env/bin/python
    
    在交互式shell会话中

    但是如果你想做的不仅仅是activate脚本呢?你可以把

    source /path/to/the/virtual_env/bin/python
    

    进入shell脚本。 但是,由于上面提到的原因,当您正常调用脚本时,它不会产生太大影响。相反,source您的脚本可以在交互式会话中使用它。

    因此:

    my_activate.sh

    的内容
    #!/bin/bash
    
    # Do something
    # ...
    
    # then
    source /path/to/the/virtual_env/bin/python
    
    # Do more stuff
    # ...
    

    并在您的互动会话中

    source my_activate.sh
    

答案 1 :(得分:0)

以下几个步骤,您可以做的一件事是

export PYTHON = "/path/pathto/virtualenv/python"

在bashrc中使用此路径来使用。或者您可以执行以下操作: -

vim ~/.bashrc 

转到结束并设置

alias python=/path/pathto/virtualenv/python
source ~/.bashrc 

答案 2 :(得分:0)

我建议使用virtualenvwrapper。它提供了一些用于管理虚拟环境的有用工具。

pip install --user virtualenvwrapper

创建虚拟环境时,指定应在环境中使用哪个版本的python。

mkvirtualenv  -p /usr/local/bin/python2.6  myproject.2.6
mkvirtualenv  -p /usr/local/bin/python3.3  myproject.3.3

然后,"输入"使用workon命令的环境。

workon myproject.2.6