2009-06-07 12 views
6

próbując Django do pracy z Apache, a ja otrzymuję następujący błąd:mod_pythona błąd: ImportError: Nie można zaimportować ustawienia

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

My Django aplikacja znajduje się w katalogu/home/user/Django/MyDjangoApp/

Moje httpd.conf wygląda sekcja Lokalizacja:

<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> 

Proszę mi powiedzieć jak skorygować punkt lokalizacji, aby Django działa?

Odpowiedz

11

Myślę, że mod_python szuka ustawień w module MKSearch, który nie istnieje w katalogu/home/user/django/MyDjangoApp. Spróbuj dodać macierzystą dir do dyrektywy PYTHONPATH jak poniżej:

<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> 

lub usunąć nazwę modułu z DJANGO_SETTINGS_MODULE env var jak poniżej:

<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 Django docs docs nad różnicą między "/ home/user/django" (która pozwala "from MyDjangoApp import foo") i alternatywami. –

+0

usunięcie nazwy modułu przed ustawieniami rozwiązało mój problem. Uff! – PhoebeB

4

Podając tę ​​odpowiedź dla kompletności - choć sprawa była różne.

Kiedyś nazwałam mój projekt django test. No cóż, django importował test modułu Pythona - który jest modułem do testowania regresji i nie ma nic wspólnego z moim projektem.

Ten błąd wystąpi, gdy Python znajdzie inny moduł o tej samej nazwie, co projekt django. Nazwij swój projekt w wyraźny sposób lub dodaj ścieżkę katalogu nadrzędnego aplikacji do sys.path.

+2

Dokładnie to, co się ze mną działo. Dzięki! – nlaq

+0

To był też mój problem. Miałem obszar testowy o nazwie test i nazwa jest w konflikcie z wbudowanym pakietem. Wydaje się to dość powszechne, że Django prawdopodobnie powinien podać specjalny komunikat o błędzie. –

-1

Następujący przykład, znajdujący się w pliku konfiguracyjnym Apache, działa. Bardzo ciężko było mi mod_python do pracy pomimo dobrych odpowiedzi od ludzi. W większości komentarze, które otrzymałem, mówiły, że używają mod_wsgi zamiast mod_python.

Komentarze Widziałem, w tym z Boston Python Meetup wszystkie concur mod_wsgi jest łatwiejszy w użyciu. W moim przypadku w Red Hat EL 5 WS zmiana z mod_python jest niepraktyczna.

<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>