2009-08-01 9 views
14

Die App läuft gut aber django interner Server verwenden, wenn ich Apache + mod_python verwende ichDjango Neuling Deployment Frage - Import: Es kann keine Einstellungen 'Einstellungen' importiert


File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__ 
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) 

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

die unten Fehlermeldung erhalten hier die benötigten Informationen

1) Projektverzeichnis:/root/djangoprojects/mysite

2) Verzeichnisliste/root/djangoprojects/mysite

ls -ltr 
total 28 
-rw-r--r-- 1 root root 546 Aug 1 08:34 manage.py 
-rw-r--r-- 1 root root 0 Aug 1 08:34 __init__.py 
-rw-r--r-- 1 root root 136 Aug 1 08:35 __init__.pyc 
-rw-r--r-- 1 root root 2773 Aug 1 08:39 settings.py 
-rw-r--r-- 1 root root 1660 Aug 1 08:53 settings.pyc 
drwxr-xr-x 2 root root 4096 Aug 1 09:04 polls 
-rw-r--r-- 1 root root 581 Aug 1 10:06 urls.py 
-rw-r--r-- 1 root root 314 Aug 1 10:07 urls.pyc 

3) App Verzeichnis:/root/djangoprojects/mysite/polls

4) Verzeichnisliste/root/djangoprojects/mysite/polls

ls -ltr 
total 20 
-rw-r--r-- 1 root root 514 Aug 1 08:53 tests.py 
-rw-r--r-- 1 root root 57 Aug 1 08:53 models.py 
-rw-r--r-- 1 root root 0 Aug 1 08:53 __init__.py 
-rw-r--r-- 1 root root 128 Aug 1 09:02 views.py 
-rw-r--r-- 1 root root 375 Aug 1 09:04 views.pyc 
-rw-r--r-- 1 root root 132 Aug 1 09:04 __init__.pyc 

5) überall in dem Dateisystem-Laufe Import django in python-Interpreter funktioniert

6) Gehalt an httpd.conf

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

7) PYTHONPATH Variable

echo $PYTHONPATH 
/root/djangoprojects/mysite 

8) DJANGO_SETTINGS_MODULE gesetzt wird, auf

echo $DJANGO_SETTINGS_MODULE 
mysite.settings 

9) Gehalt an sys.path ist

import sys 
>>> sys.path 
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages'] 

Wie Ich füge Einstellungen zu sys.path so hinzu, dass sie über mehrere Sitzungen hinweg bestehen bleiben.

Ich habe zig keine post mit Menschen, die das gleiche Problem es gelesen, und ich habe eine Menge völlig schlägt mich versucht, was ich tun muss.

der Suche nach Hilfe.

Vielen Dank im Voraus Ankur Gupta

Antwort

5

Ihre Apache-Konfiguration sollte wie folgt aussehen:

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

Beachten Sie, dass der einzige Unterschied die "mysite.settings" ist. Vergessen Sie nicht Apache neu zu starten, nachdem sich die Konfiguration geändert hat (apache2ctl restart). Weitere Informationen finden Sie unter http://docs.djangoproject.com/en/dev/howto/deployment/modpython/.

+0

machte die Änderung, die Sie so jetzt erwähnt es als erscheint SetHandler Python-Programm PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings Python django.root/mysite PythonPath "[ '/ root/djangoprojects /', '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls', '/ var/www'] + sys.path" PythonDebug Auf zum Neustart habe ich folgendes getan /etc/init.d/apache2 restart sti Ich werde kein Glück haben. /etc/init.d/apache2 Neustart –

+0

machte die Änderung der Einstellungen zu mysite.settings immer noch den gleichen Fehler. –

+1

vielleicht verwirrt der lange PythonPath mod_python. Versuchen Sie, nur PythonPath "['/ root/djangoprojects /'] + sys.path" Außerdem stellen Sie sicher, dass Apache das Recht hat, die Einstellungsdatei zu lesen (Leseberechtigung für andere) und den gesamten Pfad bis zur Datei (lesen und führe die Berechtigung für andere auf/root,/root/djangoprojects und/root/djangoprojects/mysite) aus. Obwohl es besser wäre, das gesamte Projekt an einen Ort außerhalb von/root zu verschieben, sollte es doch nicht dort sein. –

0

Versuchen Sie, die folgende Veränderung:

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

Verwenden keine „/“ am Ende der PythonPath Einträge (das ein Problem sein kann, hatte ich Probleme mit, dass zumindest unter Windows).

Die Einträge '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls' werden nicht benötigt, da Sie auf Ihre Module mit vollem Namen (d. H. Mysite.sttings bedeutet das Einstellungsmodul innerhalb des mysite-Pakets, welches der korrekte Weg ist, um in PythonPath/root/djangoprojects darauf zuzugreifen.

Verwandte Themen