我有一个在cron作业上运行的python脚本。该脚本使用相关Web门户的django ORM进行db调用。但是,我很难从命令行运行脚本。在脚本的顶部我有:
import sys
sys.path.append('/Users/david542/Desktop/project/')
from project.home.models import Title, Order
当我尝试运行脚本时:
File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable
DJANGO_SETTINGS_MODULE is undefined
似乎我需要在我的python脚本中设置DJANGO_SETTINGS_MODULE
路径,但我究竟会怎么做呢?
答案 0 :(得分:2)
假设你的项目设置在/Users/david542/Desktop/project/my_settings.py中,你需要将DJANGO_SETTINGS_MODULE设置为'my_settings'让Django知道它在哪里。
要设置变量,只需使用
调用脚本即可DJANGO_SETTINGS_MODULE=my_settings python /path/to/your/script.py
另外,我建议你不要在脚本中硬编码项目的路径,而是使用PYTHONPATH环境变量传递它,如下所示:
PYTHONPATH="/Users/david542/Desktop/project" DJANGO_SETTINGS_MODULE=my_settings python /path/to/your/script.py
干杯,
西蒙
答案 1 :(得分:0)
将django应用程序放在sys.path
中,然后设置django设置环境,有关详细信息,请参阅此处:Why do I need the DJANGO_SETTINGS_MODULE set?。
import sys
sys.path.append('/Users/david542/Desktop/project/')
from django.core.management import setup_environ
from project import settings
setup_environ(settings)
from project.home.models import Title, Order