如何使用`crontab`或`gnome-terminal`从虚拟环境执行命令

时间:2013-01-16 14:33:27

标签: python virtualenv crontab gnome-terminal virtualenvwrapper

当我想使用 virtualenv(1.8.2) virtualenvwrapper(3.6)处理虚拟环境时,我只需运行workon my_project。但是,无法使用crontabgnome-terminal 从虚拟环境执行命令:

示例:

* * * * * workon my_project && python task.py

这是没有执行的。 (任务写入文件)

gnome-terminal --tab -e "bash -c \"workon my_project;python task.py;exec bash\"" 这只显示bash: workon: command not found,然后从系统环境执行程序。有关此命令的详细信息,请查看here

修改

@Zaar Hai:在virtualenvwrapper

中发起/home/myusername/.bashrc这个问题
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true

所以我尝试了这个命令:

gnome-terminal --tab -e "bash -c \"export WORKON_HOME=~/.virtualenvs;source /usr/local/bin/virtualenvwrapper.sh;export PIP_VIRTUALENV_BASE=$WORKON_HOME;export PIP_RESPECT_VIRTUALENV=true;source /home/myusername/.virtualenvs/my_project/bin/activate;exec bash\""

但我仍然得到与你在评论中发布的相同的输出。

1 个答案:

答案 0 :(得分:4)

通过crontab:

0 10 * * * env -i bash -c 'export WORKON_HOME=~/.virtualenvs && source /usr/local/bin/virtualenvwrapper.sh && workon my_project && python task.py'

通过gnome终端:

gnome-terminal --tab -e 'bash -c "export WORKON_HOME=~/.virtualenvs && source /usr/local/bin/virtualenvwrapper.sh && workon my_project && python task.py " '

最重要的是创建一个runme.sh脚本:

#/bin/sh
set -e
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
workon my_project
exec python task.py

通过gnome terminal / crontab运行此脚本。