2013-01-15 4 views
6

quando usoDJANGO_SETTINGS_MODULE non è definito con gis.db

from django.contrib.gis.db import models 

ottengo l'errore:

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. 

come risolvere il problema ??

Quando uso

from django.db import models 

il lavoro Django senza problemi

risposta

4

Ci sono due modi per risolvere questo:

  1. è necessario aggiungere un modulo settings e impostate DJANGO_SETTINGS_MODULE per puntare a it oppure
  2. utilizzare settings.configure per ignorare la variabile env DJANGO_SETTINGS_MODULE.

La seconda alternativa è buona per utilizzare le parti di senza effettivamente impostare tutto ciò che è necessario per un progetto.

2

gis.dbnon è essenziale nella sua interrogazione.

La differenza tra i due comandi di importazione è solo nel contesto, come li si esegue, perché django.contrib.gis.db.models non fa prima di importare django.db.models qualcosa di più di importazione di alcuni __init__.py file vuoti.

Il modo più semplice per testare qualsiasi cosa nell'ambiente corretto è tramite i comandi di gestione, ad es.

$ 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) 

(Una domanda simile Django documentation: Models; error from line 1 of code)