如何在crontab中运行
*/1 * * * * /home/user/Desktop/job/dp/ python manage.py statistics
虚拟环境?我需要先激活virtualenv(否则它不起作用)
这是我的虚拟环境:
source job/bin/activate
答案 0 :(得分:15)
<强> EDITED 强>:
尝试这样的事情:
*/1 * * * * . /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics
这应该被理解为:激活env,如果成功,则执行manage.py脚本。由于manage.py应该有一个python shebang,虚拟env设置正确的python解释器,这应该可以工作。
显然cron通常以/bin/sh
运行,而source
不知道source
命令。因此,一种选择是使用点作为/bin/bash
替换。另一个在cron文件中设置SHELL=/bin/bash
*/1 * * * * source /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics
:
source
详细了解此问题:
http://codeinthehole.com/writing/running-django-cronjobs-within-a-virtualenv/
文章没有提及.
可以被{{1}}取代,但我刚试过它并且它对我有用。所以你现在有几个选择可供选择,文章甚至还有其他选择。 ;)
答案 1 :(得分:4)
使用~/envs/someenv/lib/python /path/to/your/script
在您的情况下,它看起来像
*/1 * * * * ~/envs/someenv/lib/python /home/user/Desktop/job/dp/manage.py statistics