2009-10-29 22 views
20

Mam skrypt, który importuje model.py z aplikacji, ale nie będzie importować! Nie wierzę, że mam ręcznie utworzyć zmienną środowiskową "export DJANGO ..." ... Robię coś złego.Dlaczego pojawia się ten błąd w 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. 

Odpowiedz

16

nie wierzę, jestem podobno ręcznie utworzyć "wywóz Django ..." zmienna środowiskowa ...

ręcznie lub w inny sposób, to rzekomej aby upewnić się, że zmienna jest w środowisku przed zaimportowaniem pliku modeli Django - nie wiesz, jakie są przyczyny twojego niewiary, ale niezależnie od tego, jakie są, niewiara jest nieuzasadniona.

+0

Dzięki. Czy rozsądnie jest powiedzieć, że po skonfigurowaniu projektu Django, WYMAGANE jest ustawienie 2 zmiennych środowiskowych? -DJANGO_SETTINGS_MODULE -PYTHONPATH ..włącz ścieżkę projektu.? – TIMEX

+9

lol, myślę, że bierzesz "nie wierzę" zbyt dosłownie. – hasen

+1

@hasen, domyślam się, że mam wysokie oczekiwania od kogoś o imieniu "alex" ;-). –

38

Musisz poprawnie zaimportować plik ustawień. Jeśli nie zaimportujesz najpierw zmiennych środowiskowych django, twój import się nie powiedzie, jak zauważyłeś. Trzeba kodować coś takiego:

 
import os 

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

#do your stuff 

+0

Dziękujemy za udostępnienie – Prabu

+0

Należy również zauważyć, że to polecenie musi zostać wykonane przed wykonaniem jakichkolwiek innych importów z projektu. –

6

Alternatywą dla ingerować w środowisko jest po prostu napisać skrypt jako Django custom management command, która dba o tworzeniu środowiska dla Ciebie (wraz z innymi takich opcji parsowania itp.).

15

z wiersza poleceń uruchomionego "Python manage.py shell" powinien zawierać odpowiednie ustawienia dla ciebie i dać monit python.

0

Z wiersza poleceń, wykonaj to polecenie. To może pomóc:

export DJANGO_SETTINGS_MODULE=projectname.settings 
0

Miałam podobny problem, i zdałem sobie sprawę, że zapomniałem, aby utworzyć plik "startowych .py" w do folderu aplikacji:

myapp: 
    manage.py 
    myapp: 
     __init__.py 
     settings.py 
     .... 
Powiązane problemy