【发布时间】:2019-06-20 21:46:43
【问题描述】:
我在 Django 中使用 Python 3.7。我想在我运行的地方设置一个 cron 作业(“crontab -e”)
davea$ /bin/bash -l -c 'cd /Users/davea/Documents/workspace/mainpage_project; ./venv/bin/activate; python manage.py runstats'
但是,在运行时,我得到了错误
File "manage.py", line 14
) from exc
如果我跑了
cd /Users/davea/Documents/workspace/mainpage_project; ./venv/bin/activate; python manage.py runstats
一切运行良好,但我想加载环境变量,这就是我尝试前一个命令的原因。有没有办法修复第一个命令,以便我可以加载我的环境变量并执行我的脚本?下面是我的“manage.py”文件...
#!/usr/bin/env python
import os
import sys
if __name__ == '__main__':
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mainpage_project.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc # line 14
execute_from_command_line(sys.argv)
【问题讨论】:
-
虽然 cron 作业可以完成您需要的工作,但仍然强烈建议您查看 celery beats
-
您显示的错误不完整。但我以前见过它,这是一个语法错误,不是吗?它表明您的命令正在使用错误的 python 版本(2.x 系统版本而不是 3.x)运行。您激活 venv 的命令是错误的,应该是
source ./venv/bin/activate -
谢谢@dirkgroten。这确实是问题所在。
标签: python django python-3.x cron environment-variables