2009-06-07 9 views
6

Der Versuch, Django zu bekommen mit Apache zu arbeiten, und ich bin immer folgende Fehlermeldung:Mod_python Fehler: Import: Es konnte keine Einstellungen importieren

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

Meine Django app in/home/user/django befindet/MyDjangoApp/

Mein httpd.conf Lage sieht so aus:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Bitte sagen Sie mir, wie Sie den Speicherort Abschnitt korrigieren Django arbeiten zu lassen?

Antwort

11

Ich denke, mod_python sucht nach Einstellungen im MKSearch-Modul, die nicht in der Seite/home/user/django/MyDjangoApp Verzeichnis existiert. Versuchen Sie das Elternverzeichnis auf die PythonPath Richtlinie Zugabe wie folgt:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Oder entfernen Sie den Modulnamen aus dem DJANGO_SETTINGS_MODULE env var wie folgt:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 
+0

+1 Die django docs glänzen über den Unterschied zwischen "/ home/user/django" (was "von MyDjangoApp import foo" erlaubt) und Alternativen. –

+0

Entfernen des Modulnamens von vor den Einstellungen löste mein Problem. Puh! – PhoebeB

4

Geben Sie diese Antwort auf Vollständigkeit - auch wenn Ihr Fall war anders.

Ich habe einmal mein Django-Projekt test genannt. Nun, Django hat den Python-Modultest importiert - was ein Modul für Regressionstests ist und nichts mit meinem Projekt zu tun hat.

Dieser Fehler tritt auf, wenn Python ein anderes Modul mit dem gleichen Namen wie Ihr Django-Projekt findet. Benennen Sie Ihr Projekt auf eine bestimmte Art oder geben Sie den Pfad des übergeordneten Verzeichnisses Ihrer Anwendung an sys.path an.

+2

Genau was mir passiert ist. Vielen Dank! – nlaq

+0

Das war mein Problem auch. Ich hatte einen Staging-Bereich namens test und der Name widersprach dem integrierten Paket. Dies scheint häufig genug, dass Django wahrscheinlich eine spezielle Fehlermeldung dafür geben sollte. –

-1

Das folgende Beispiel, das sich in meiner Apache-Konfigurationsdatei befindet, funktioniert. Ich fand es sehr schwer, mod_python trotz guter Antworten von Leuten zum Laufen zu bringen. Die Kommentare, die ich erhalten habe, sagten alle, dass sie mod_wsgi anstelle von mod_python benutzen sollten.

Kommentare Ich habe gesehen, einschließlich der Boston Python Meetup alle concur mod_wsgi ist einfacher zu bedienen. In meinem Fall ist der Wechsel von mod_python auf Red Hat EL 5 WS nicht praktikabel.

<Location /> 
     SetHandler python-program 
     PythonHandler django.core.handlers.modpython 
     SetEnv DJANGO_SETTINGS_MODULE settings 
     PythonOption django.root /home/amr/django/amr 
     PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib 
/site-packages/django'] + sys.path" 
     PythonDebug On 
</Location> 
Verwandte Themen