为什么我在Django中收到此错误?

时间:2009-10-29 03:23:08

标签: python django

我有一个从应用程序导入models.py的脚本,但它不会导入! 我不相信我应该手动创建一个“导出DJANGO ......”环境变量...我正在做其他错误。

 Traceback (most recent call last):
      File "parse.py", line 8, in ?
        from butterfly.flower.models import Channel, Item
      File "/home/user/shri/butterfly/flower/models.py", line 1, in ?
        from django.db import models
      File "/usr/lib/python2.4/site-packages/django/db/__init__.py", line 10, in ?
        if not settings.DATABASE_ENGINE:
      File "/usr/lib/python2.4/site-packages/django/utils/functional.py", line 269, in __getattr__
        self._setup()
      File "/usr/lib/python2.4/site-packages/django/conf/__init__.py", line 38, 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.

6 个答案:

答案 0 :(得分:38)

您需要正确导入设置文件。如果您不首先导入django环境变量,则导入将失败,因为您已经注意到了。你需要编写类似的代码:

import os

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"

#do your stuff

答案 1 :(得分:16)

  

我不相信我应该这样做   手动创建“导出DJANGO ......”   环境变量......

手动或其他方式,你 应该确保变量在导入Django模型文件之前在环境中 - 不确定是什么原因让你难以置信,但是,无论它们是什么,这种怀疑是没有根据的。

答案 2 :(得分:14)

从命令行运行“python manage.py shell”应包含适合您的设置,并为您提供python提示。

答案 3 :(得分:6)

搞乱环境的另一种方法是将脚本编写为Django custom management command,它负责为您设置环境(以及选项解析等其他内容)。

答案 4 :(得分:0)

从命令行,请执行此命令。这可能会对您有所帮助:

export DJANGO_SETTINGS_MODULE=projectname.settings

答案 5 :(得分:0)

我遇到了类似的错误,我意识到我忘了创建文件" init .py"进入app文件夹:

myapp:
    manage.py
    myapp:
        __init__.py
        settings.py
        ....