Sha*_*ang 6 python bash virtualenv
如果定义了要在bash脚本中使用的python版本,那将是
export PYTHON = "/path/python/python-3.5.1/bin/python"
Run Code Online (Sandbox Code Playgroud)
但对于Python virtualenv,则可以在命令行中执行以下命令
cd /path/pathto/virtualenv
source activate
cd another_directory
Run Code Online (Sandbox Code Playgroud)
如何在bash脚本中“输入” Python virtualenv?这里的标准方法是什么?
我们必须在这里区分两种情况:
如何在bash脚本中“输入” Python virtualenv?
就像在交互式bash命令行上一样:
source /path/to/the/virtual_env/bin/activate
Run Code Online (Sandbox Code Playgroud)
这里的标准方法是什么?
标准的做法是不是要进入一个bash脚本中的virtualenv。相反,请按其完整路径调用要使用的python和/或基于python的命令。为了使此操作更容易且减少重复,您可以使用别名和变量。
已经有这样的脚本。它被称为activate,它位于binvirtualenv 的目录中。您必须这样做source,而不是像普通命令一样调用它。只有这样,它才能在同一个会话中运行,而不是在子外壳程序中运行,因此只有这样,它才能对会话进行修改,而不会因子外壳程序在脚本末尾终止而丢失。
所以做:
source /path/to/the/virtual_env/bin/activate
Run Code Online (Sandbox Code Playgroud)
在您的交互式Shell会话中。
但是,如果您想做的比activate脚本还要多呢?你可以放
source /path/to/the/virtual_env/bin/activate
Run Code Online (Sandbox Code Playgroud)
到一个shell脚本。但是,由于上述原因,正常调用脚本时不会产生太大影响。相反,source您的脚本可以从交互式会话中使用它。
从而:
内容 my_activate.sh
#!/bin/bash
# Do something
# ...
# then
source /path/to/the/virtual_env/bin/activate
# Do more stuff
# ...
Run Code Online (Sandbox Code Playgroud)
在您的互动环节
source my_activate.sh
Run Code Online (Sandbox Code Playgroud)