我正在尝试使用crontab定期执行python脚本。我按照here给出的解决方案使用virtualenv执行命令。以下是我的crontab
SHELL=/bin/bash
HOME=/
MAILTO="myid@example.com"
* * * * * cd /home/jaskaran/edmhunters && /home/jaskaran/edmhunters/env/bin/python /home/jaskaran/edmhunters/scripts/db/songlist.py
我一直得到这个ImportError
Traceback (most recent call last):
File "/home/jaskaran/edmhunters/scripts/db/songlist.py", line 4, in <module>
from hunt.models import DJ, Song
ImportError: No module named hunt.models
从shell运行时,脚本运行正常。我错过了什么?
答案 0 :(得分:0)
Django导入错误通常会产生误导,因为Django会加载其INSTALLED_APPLICATIONS
以及Django尝试访问其设置时所有隐式代码。
要解决此问题,请从脚本中创建Django management command。
如果您需要从shell脚本或cron运行virtualenv'ed Django脚本或管理命令,请尝试此语法:
export DJANGO_SETTINGS_MODULE=mymodule.settings ; /srv/django/myproject/venv/bin/python /srv/django/myproject/manage.py MyManagementCommand