1

我有一个在 cron 作业上运行的 python 脚本。该脚本使用相关门户网站的 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

看来我需要DJANGO_SETTINGS_MODULE在我的 python 脚本中设置路径,但我该怎么做呢?

4

2 回答 2

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

干杯,

西蒙

于 2012-06-29T23:27:21.610 回答
0

将 django 应用程序放入sys.path,然后设置 django 设置环境,请参阅此处了解更多详细信息:为什么我需要设置 DJANGO_SETTINGS_MODULE?.

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
于 2012-06-29T23:27:08.827 回答