2010-03-25 15 views
6

Könnte mir jemand einen Hinweis geben, warum ich meinen Projektstammpfad zum Python-Pfad sowie die Anwendung selbst in meiner WSGI-Datei hinzufügen muss?Django sys.path.append für Projekt * und * app benötigt unter WSGI

Die Projektdatenbank heißt 'djapp', die Anwendung heißt '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' 

Wenn ich die Zeile mit „/../djapp/“ das Protokoll sagt meine, dass ‚myapp‘ weglassen können nicht importiert werden, auch wenn ‚djapp.settings‘ ist. (Die Validierung von 'djapp' wurde importiert.)

Es wird ordnungsgemäß mit dem Befehl ./manage.py ausgeführt. Im Projektordner befindet sich ein __init__.

Für testings willen, sehe ich das gleiche Problem mit addsitedir:

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

Antwort

4

Seit djapp (der django Projektordner) in einem übergeordneten Ordner, die zur Bereitstellung gehört auch ich die djapp Ordner einfach zu project umbenannt. Dann ist dieser Code immer richtig:

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' 

Der komplette Ordnerstruktur Wesen:

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

Und was Sie haben. Auf diese Weise kann Projekt immer Projekt genannt werden :)

Hoffe, dass hilft.

GrtzG

3

Vermutlich haben Sie in Ihrem Projekt bekam Code, der from myapp import foo tut.

zwei Optionen:

  • Veränderung, die zu from djapp.myapp import foo, die nicht empfohlen, da es Portabilität verhindert;
  • Fügen Sie in Ihrem WSGI nur djapp hinzu und setzen Sie die DJANGO_SETTINGS_MODULE auf 'settings'.
+0

Hallo Daniel, danke für die Rückmeldung. Habe schon die 2. Option ausprobiert, aber dann klagt es über den Import von 'djapp.urls' – GerardJP