执行bash脚本时如何进入Python virtualenv?
How does one enter a Python virtualenv when executing a bashscript?
如果定义在 bash 脚本中使用 python 的哪个版本,它将是
export PYTHON = "/path/python/python-3.5.1/bin/python"
但是对于Python virtualenv,在命令行中执行这些命令
cd /path/pathto/virtualenv
source activate
cd another_directory
"enter" 如何在 bash 脚本中创建 Python virtualenv?这里的标准方法是什么?
这里有几个步骤,您可以做的一件事是
export PYTHON = "/path/pathto/virtualenv/python"
在bashrc中使用这个路径来使用。或者你可以这样做:-
vim ~/.bashrc
转到结束并设置
alias python=/path/pathto/virtualenv/python
source ~/.bashrc
我推荐使用 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
然后,"enter"使用 workon 命令的环境。
workon myproject.2.6
这里必须区分两种情况:
- 您想在 bash 脚本中 use/call python(或基于 python 的工具),但是 python 或那些工具应该被使用来自和 运行 在 virtualenv
- 你想要一个脚本,除其他外,让你调用它的shell进入virtualenv,这样你就可以交互调用python(或python-基于工具)在 virtualenv
案例 1:在脚本中使用 virtualenv
How does one "enter" a Python virtualenv in a bash script?
就像在交互式 bash 命令行上一样:
source /path/to/the/virtual_env/bin/activate
What is the standard approach here?
标准方法是不是到在bash脚本中输入virtualenv。相反,调用 python and/or 您希望通过其完整路径使用的基于 python 的命令。为了使这更容易并减少重复,您可以使用别名和变量。
案例 2:通过调用脚本在交互式 bash 会话中激活 virtualenv
已经有这样的脚本了。它叫做 activate
,它位于 virtualenv 的 bin
目录中。您必须 source
它而不是像普通命令那样调用它。只有这样它才会 运行 在同一个会话中而不是在子 shell 中,因此只有这样它才能对会话进行修改而不会因子 shell 而丢失在脚本末尾终止。
那就这样吧:
source /path/to/the/virtual_env/bin/activate
在您的互动 shell 会话中。
但是,如果您想做的比 activate
脚本做的更多怎么办?你可以把
source /path/to/the/virtual_env/bin/activate
到 shell 脚本中。 但是,由于上面提到的原因,当你正常调用你的脚本时,它不会有太大的影响。相反,source
您的脚本可以在交互式会话中使用它。
因此:
my_activate.sh
的内容
#!/bin/bash
# Do something
# ...
# then
source /path/to/the/virtual_env/bin/activate
# Do more stuff
# ...
并在您的互动会话中
source my_activate.sh
如果定义在 bash 脚本中使用 python 的哪个版本,它将是
export PYTHON = "/path/python/python-3.5.1/bin/python"
但是对于Python virtualenv,在命令行中执行这些命令
cd /path/pathto/virtualenv
source activate
cd another_directory
"enter" 如何在 bash 脚本中创建 Python virtualenv?这里的标准方法是什么?
这里有几个步骤,您可以做的一件事是
export PYTHON = "/path/pathto/virtualenv/python"
在bashrc中使用这个路径来使用。或者你可以这样做:-
vim ~/.bashrc
转到结束并设置
alias python=/path/pathto/virtualenv/python
source ~/.bashrc
我推荐使用 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
然后,"enter"使用 workon 命令的环境。
workon myproject.2.6
这里必须区分两种情况:
- 您想在 bash 脚本中 use/call python(或基于 python 的工具),但是 python 或那些工具应该被使用来自和 运行 在 virtualenv
- 你想要一个脚本,除其他外,让你调用它的shell进入virtualenv,这样你就可以交互调用python(或python-基于工具)在 virtualenv
案例 1:在脚本中使用 virtualenv
How does one "enter" a Python virtualenv in a bash script?
就像在交互式 bash 命令行上一样:
source /path/to/the/virtual_env/bin/activate
What is the standard approach here?
标准方法是不是到在bash脚本中输入virtualenv。相反,调用 python and/or 您希望通过其完整路径使用的基于 python 的命令。为了使这更容易并减少重复,您可以使用别名和变量。
案例 2:通过调用脚本在交互式 bash 会话中激活 virtualenv
已经有这样的脚本了。它叫做 activate
,它位于 virtualenv 的 bin
目录中。您必须 source
它而不是像普通命令那样调用它。只有这样它才会 运行 在同一个会话中而不是在子 shell 中,因此只有这样它才能对会话进行修改而不会因子 shell 而丢失在脚本末尾终止。
那就这样吧:
source /path/to/the/virtual_env/bin/activate
在您的互动 shell 会话中。
但是,如果您想做的比 activate
脚本做的更多怎么办?你可以把
source /path/to/the/virtual_env/bin/activate
到 shell 脚本中。 但是,由于上面提到的原因,当你正常调用你的脚本时,它不会有太大的影响。相反,source
您的脚本可以在交互式会话中使用它。
因此:
my_activate.sh
#!/bin/bash
# Do something
# ...
# then
source /path/to/the/virtual_env/bin/activate
# Do more stuff
# ...
并在您的互动会话中
source my_activate.sh