2009-10-29 31 views
20

Tengo un script que importa un models.py desde una aplicación, ¡pero no se importa! No creo que se suponga que deba crear manualmente una variable de entorno "exportar DJANGO ..." ... Estoy haciendo algo diferente.¿Por qué recibo este error en 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. 

Respuesta

16

No creo que se supone que debo crear manualmente una "exportación DJANGO ..." variable de entorno ...

manualmente o de otra manera, que está supone para asegurarse de que la variable esté en el entorno antes de importar un archivo de modelos de Django; no estoy seguro de cuáles son las causas de su incredulidad, pero, cualquiera que sea, esa incredulidad es infundada.

+0

Gracias. Entonces, ¿es razonable decir que después de configurar un proyecto de Django, se REQUIERE establecer 2 variables de entorno? -DJANGO_SETTINGS_MODULE -PYTHONPATH ..añade la ruta del proyecto.? – TIMEX

+9

jajaja, creo que estás tomando "No creo" demasiado literalmente. – hasen

+1

@hasen, supongo que tengo expectativas muy altas de alguien llamado "alex" ;-). –

38

Necesita importar correctamente su archivo de configuración. Si no importa primero las variables de entorno django, su importación fallará como habrá notado. Es necesario para codificar algo como:

 
import os 

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

#do your stuff 

+0

Gracias por compartir – Prabu

+0

También debe tenerse en cuenta que este comando debe ir antes de realizar cualquier otra importación desde su proyecto. –

6

Una alternativa a perder el tiempo con el medio ambiente es simplemente escribir el guión como Django custom management command, que se encarga de la configuración del entorno para usted (junto con otras cosas como el análisis de las opciones , etc.)

15

desde la línea de comandos ejecutada "python manage.py shell" debe incluir la configuración correcta para usted y darle el aviso de python.

0

Desde la línea de comandos, ejecute este comando. Esto puede ayudarle a:

export DJANGO_SETTINGS_MODULE=projectname.settings 
0

tenía este error similar, y me di cuenta que se me olvidó para crear el archivo "init .py" en la carpeta de aplicaciones:

myapp: 
    manage.py 
    myapp: 
     __init__.py 
     settings.py 
     .... 
Cuestiones relacionadas