Shr*_*rat 56 python bash virtualenv virtualenvwrapper
所以,再一次,我做了一个很好的python程序,让我的生活变得更轻松,节省了大量的时间.当然,这涉及到virtualenv,由virtualenvwrapper的mkvirtualenv功能.该项目有一个requirements.txt文件,其中包含一些必需的库(请求也是:D),如果没有这些库,程序将无法运行.
我试图添加一个bin/run-app可执行的shell脚本,它将在我的路径中(实际上是符号链接).现在,在这个脚本里面,我需要切换到virtualenv才能运行这个程序.所以我把它放进去了
#!/bin/bash
# cd into the project directory
workon "$(cat .venv)"
python main.py
Run Code Online (Sandbox Code Playgroud)
一个文件.venv包含virtualenv名称.但是当我运行这个脚本时,我会收到workon: command not found错误.
当然,我在我的bashrc中有virtualenvwrapper.sh,但它似乎在这个shell脚本中不可用.
那么,我如何在这里访问那些virtualenvwrapper函数呢?或者我这样做是错误的吗?你如何启动你的python工具,每个工具都有自己的virtualenv!?
mde*_*ous 71
只需在virtualenvwrapper.sh脚本中获取脚本以导入virtualenvwrapper的函数.然后,您应该能够workon在脚本中使用该功能.
也许更好,你可以创建一个shell脚本(你能说出它venv-run.sh为例)运行任何Python脚本到一个给定的virtualenv,并将其放置在/usr/bin,/usr/local/bin或者是在您的任一目录PATH.
这样的脚本可能如下所示:
#!/bin/sh
# if virtualenvwrapper.sh is in your PATH (i.e. installed with pip)
source `which virtualenvwrapper.sh`
#source /path/to/virtualenvwrapper.sh # if it's not in your PATH
workon $1
python $2
deactivate
Run Code Online (Sandbox Code Playgroud)
并且可以简单地使用 venv-run.sh my_virtualenv /path/to/script.py
我找不到触发virtualenvwrappershell 命令的方法.但这个技巧可以帮助:假设你的环境.name是myenv,然后在脚本的开头放下以下行:
ENV=myenv
source $WORKON_HOME/$ENV/bin/activate
Run Code Online (Sandbox Code Playgroud)