6

当我使用

from django.contrib.gis.db import models

我得到错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    from django.contrib.gis.db import models
  File "C:\Python27\lib\site-packages\django\contrib\gis\db\models\__init__.py"
, line     2, in <module>
    from django.db.models import *
 File "C:\Python27\lib\site-packages\django\db\__init__.py", line 11, in <module>
   if DEFAULT_DB_ALIAS not in settings.DATABASES: 
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 184,
 in inner
   self._setup()
  File "C:\Python27\lib\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.

如何解决?

使用时

from django.db import models

django 工作没有问题

4

2 回答 2

4

有两种方法可以解决此问题:

  1. 您需要添加一个settings模块并设置DJANGO_SETTINGS_MODULE为指向它,或者
  2. 用于settings.configure绕过DJANGO_SETTINGS_MODULEenv 变量。

第二种选择可以很好地使用部分内容,django而无需实际设置项目所需的所有内容。

于 2013-01-17T23:53:17.627 回答
2

gis.db 在您的问题中不是必需的。

两个导入命令之间的区别仅在于上下文以及运行它们的方式,因为在导入除了导入一些空文件之外的任何内容django.contrib.gis.db.models之前不会做任何事情。django.db.models__init__.py

如何在正确的环境中测试任何东西的最简单方法是通过管理命令,例如

$ python manage.py shell
# now you are sure that django.conf settings have been imported
>>> from django.contrib.gis.db import models
>>> from django.db import models
# Both will equally succeed (or maybe fail for another reason)

(一个类似的问题Django 文档:Models; error from line 1 of code

于 2013-01-18T16:56:53.157 回答