7

如何在 crontab 中运行

*/1 * * * * /home/user/Desktop/job/dp/ python manage.py statistics

与虚拟环境?我需要先激活 virtualenv(否则它不起作用)

这是我的虚拟环境:

source job/bin/activate
4

2 回答 2

16

编辑

尝试这样的事情:

*/1 * * * * . /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics

这应该读作:激活环境,如果成功,则执行 manage.py 脚本。由于 manage.py 应该有一个 python shebang 并且虚拟环境设置了正确的 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

在以下位置阅读有关此问题的更多信息: http ://codeinthehole.com/writing/running-django-cronjobs-within-a-virtualenv/ 文章没有提到source可以替换为 a .,但我刚刚尝试过并且它对我有用。因此,您现在有几个选项可供选择,文章甚至还有其他选项。;)

于 2013-02-08T15:43:03.593 回答
4

使用类似的东西~/envs/someenv/lib/python /path/to/your/script

在您的情况下,它看起来像

*/1 * * * * ~/envs/someenv/lib/python /home/user/Desktop/job/dp/manage.py statistics

于 2013-02-08T15:36:42.977 回答