2009-10-29 166 views
20

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

回答

16

我不认为我应该 手动创建一个 “出口DJANGO ......” 环境变量...

手动或以其他方式,你咋办以确保变量在导入Django模型文件之前处于环境中 - 不确定导致您怀疑的原因是什么,但无论它们是什么,该怀疑都没有根据。

+0

感谢。那么,在设置一个Django项目之后,是否有必要设置2个环境变量? -DJANGO_SETTINGS_MODULE -PYTHONPATH ..加上项目路径。 – TIMEX

+9

大声笑,我认为你从字面上看“我不相信”。 – hasen

+1

@hasen,猜我对任何名叫“alex”的人都有很高的期望;-)。 –

38

您需要正确导入您的设置文件。如果您不先导入django环境变量,则导入将失败,正如您注意到的那样。你需要什么样的代码:

 
import os 

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

#do your stuff 

+0

感谢分享 – Prabu

+0

还应该注意的是,在您从项目中进行任何其他导入之前,必须执行此命令。 –

6

的一种替代方法摆弄环境,就是只写你的脚本作为Django custom management command,它负责为你设置环境的(连同其他像选项解析等)。

15

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

0

从命令行执行该命令。这可以帮助你:

export DJANGO_SETTINGS_MODULE=projectname.settings 
0

我有这种类似的错误,我意识到,我忘了创建的应用程序文件夹中的文件“初始化 py”为:

myapp: 
    manage.py 
    myapp: 
     __init__.py 
     settings.py 
     .... 
相关问题