WSGI/Django-settings-Modul: kein Import möglich

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dauerbaustelle hat geschrieben:Wenn ich die Django-Shell nutze, funktioniert das Importieren auch.
Startest du evtl. die shell mit einem anderen User, als hinterher von Apache?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

jens hat geschrieben:Startest du evtl. die shell mit einem anderen User, als hinterher von Apache?
Bei mir läuft Nginx mit mod_wsgi, aber ja, die WSGI-Prozesse laufen afaik unter dem nginx-User. Allerdings habe ich a) bei keinem anderen Django-Projekt diese Probleme und b) funktionieren die Imports in derShell mit jedem anderen Nutzer.

Vielleicht habe ich auch in meinen Settings Murks gemacht? Ihr könnt ja mal reinschauen.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

In der settings vom Tutorial sind folgende Dinge anders:

Code: Alles auswählen

ROOT_URLCONF = 'mysite.urls'

Code: Alles auswählen

INSTALLED_APPS = (
    ...
    'mysite.polls',
)
``mysite`` ist in diesem Fall dein ``myproject``
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dauerbaustelle hat geschrieben:Vielleicht habe ich auch in meinen Settings Murks gemacht? Ihr könnt ja mal reinschauen.
Vielleicht hilft dir das weiter: http://code.djangoproject.com/ticket/11667 Ich weiß allerdings jetzt nicht, ob das importieren der settings mit abgedeckt ist...
Auf jeden Fall ist es IMHO dumm, das django an einigen Stellen keinen Vollständigen traceback hinterläßt. Siehe auch: http://jensdiemer.de/de/Blog/23/django- ... me-foobar/

Dein from geheim import * würde ich ehr ganz unten in die settings.py schreiben, damit man alle vorgaben "überschreiben" kann. Außerdem wäre, statt einem schlichten print e, sowas hilfreicher:

Code: Alles auswählen

try:
    from geheim import *
except ImportError, e:
    import traceback
    print traceback.format_exc()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hier noch die Erklärung zu meiner Antwort oben:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango hat geschrieben:If you have been using the Django development server and have made use of the fact that it is possible when doing explicit imports, or when referencing modules in 'urls.py', to leave out the name of the site and use a relative module path, you will also need to add to sys.path the path to the site package directory itself.

sys.path.append('/usr/local/django')
sys.path.append('/usr/local/django/mysite')
Du kannst also entweder deine Settings korrigieren oder das WSGI.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Okay Jungs, ich werd das mal ausprobieren. Wenn der Körper den Geist wieder freigibt :-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Das ist ja seltsam. Sobald ich die Imports mit `myproject.myapp` und `myproject.urls` mache, und den Datenbankpfad absolut angebe, funktioniert alles. Komisch, dieses Verhalten habe ich noch nicht gekannt.

Werde mir den Thread aber auf jeden Fall mal merken, da steckt ne ganze Menge nützliches Bugfixing-Wissen drin :-)
Antworten