2010-03-25 7 views
6

Czy ktoś mógłby mi wskazać, dlaczego muszę dodać swoją ścieżkę główną projektu do ścieżki Pythona, a także samą aplikację w moim pliku WSGI?Django sys.path.append dla projektu * i * aplikacji potrzebnej pod WSGI

Baza projektu nazywa się "djapp", aplikacja nazywa się "myapp".

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../djapp') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'djapp.settings' 

Jeśli pominąć linię „/../djapp/” mówi mój dziennik myapp „” że nie mogą być importowane, choć „djapp.settings” jest. (sprawdzono poprawność "djapp")

Działa poprawnie z poleceniem ./manage.py. w folderze projektu znajduje się __init__.

Na litość Próby, widzę ten sam problem przy użyciu addsitedir:

site.addsitedir('/home/user/web/project/') 
site.addsitedir('/home/user/web/project/djapp') 

Odpowiedz

4

Od djapp (folder projektu Django) znajduje się w folderze nadrzędnym, który również należy do rozmieszczania I przemianowany folder djapp prostu project. Wtedy ten kod jest zawsze popraw:

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../project') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 

Kompletny układ folderów istota:

host.example.com\ 
    etc\ 
    bin\ 
    project\ 
    logs\ 

A co cię mieć. W ten sposób projekt można zawsze nazwać projektem :)

Nadzieję, że pomaga.

GrtzG

3

Przypuszczalnie co masz kod w swoim projekcie, który robi from myapp import foo.

dwie opcje:

  • zmiana, która do from djapp.myapp import foo, co nie jest zalecane, ponieważ zapobiega przenoszenia;
  • dodać tylko djapp w WSGI i ustawić DJANGO_SETTINGS_MODULE na tylko 'settings'.
+0

Witaj, Daniel, dzięki za informację zwrotną. Wypróbowałem już drugą opcję, ale potem narzeka na zaimportowanie 'djapp.urls' – GerardJP

Powiązane problemy