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

标签 python virtualenv cron 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:在我的 /home/myusername/.bashrc 中启动 virtualenvwrapper:

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\""

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

最佳答案

通过 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 终端/crontab 运行这个脚本。

关于python - 如何使用 `crontab` 或 `gnome-terminal` 从虚拟环境执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360736/

相关文章:

php - 通过 wget/curl 进行长时间的 cron 作业?

python - Heroku 和 Twisted

python - 从 nx1 二进制标签数组生成 one-hot 向量

Python (pip) throw [SSL : CERTIFICATE_VERIFY_FAILED] even if certificate chain updated

django - 如何使用 Django 配置 Celery Daemon

python - Vim Pymode 不使用实际的环境

python - 错误 : could not create '/usr/local/lib/python2.7/dist-packages/virtualenv_support' : Permission denied

python - Jamroot (boost-bjam) 与共享库链接

PHP include_once 在本地工作但调用 cron 不工作

cron - 当另一个Cron作业完成时,如何运行Cron作业?