首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在shell脚本中不可用的virtualenvwrapper函数

在shell脚本中不可用的virtualenvwrapper函数
EN

Stack Overflow用户
提问于 2011-09-24 19:06:41
回答 8查看 28.2K关注 0票数 62

所以,再一次,我做了一个很好的python程序,它让我的生活变得更容易,并节省了很多时间。当然,这涉及到一个由virtualenvwrapper的mkvirtualenv函数生成的virtualenv。该项目有一个requirements.txt文件,其中包含一些所需的库(请求也是:D),如果没有这些库,程序将无法运行。

我正在尝试添加一个bin/run-app可执行外壳脚本,该脚本将位于我的路径中(实际上是符号链接)。现在,在这个脚本中,我需要切换到virtualenv,然后才能运行这个程序。所以我把这个放进去

代码语言:javascript
复制
#!/bin/bash
# cd into the project directory
workon "$(cat .venv)"
python main.py

文件.venv包含virtualenv名称。但是当我运行这个脚本时,我得到了workon: command not found错误。

当然,我在我的bashrc中有virtualenvwrapper.sh源代码,但是在这个shell脚本中似乎没有。

那么,我该如何在这里访问这些虚拟封装函数呢?还是我做错了?如何启动python工具,每个工具都有自己的virtualenv!?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-24 21:53:51

只需在脚本中使用virtualenvwrapper.sh脚本,即可导入virtualenvwrapper的函数。然后,您应该能够在脚本中使用workon函数。

也许更好的是,您可以创建一个venv-run.sh脚本(例如,您可以将其命名为Python ),以便在给定的virtualenv中运行任何Python脚本,并将其放置在/usr/bin/usr/local/binPATH中的任何目录中。

这样的脚本可能如下所示:

代码语言:javascript
复制
#!/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

并且可以像venv-run.sh my_virtualenv /path/to/script.py一样简单地使用

票数 78
EN

Stack Overflow用户

发布于 2012-08-03 16:56:52

我找不到在shell中触发virtualenvwrapper命令的方法。但是这个技巧可以帮助你:假设你的env。名称为myenv,然后将以下行放在脚本的开头:

代码语言:javascript
复制
ENV=myenv
source $WORKON_HOME/$ENV/bin/activate
票数 9
EN

Stack Overflow用户

发布于 2015-06-09 19:40:57

这是个known issue。作为一种解决办法,您可以将脚本内容作为函数,并将其放入~/.bashrc~/.profile

代码语言:javascript
复制
function run-app() {
  workon "$(cat .venv)"
  python main.py
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7538628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档