2009-08-01 9 views
14

Aplikacja działa poprawnie przy użyciu serwera wewnętrznego django jednak kiedy używać apache + mod_pythona otrzymuję poniżej błądDjango rozmieszczania początkujących pytanie - ImportError: Nie można zaimportować ustawienia „Ustawienia”


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 

Oto potrzebne informacje

1) directory Project:/root/djangoprojects/mojawitryna

2) zawartość katalogu z/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) katalog aplikacji:/root/djangoprojects/mysite/polls

4) katalog wykaz/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) Gdziekolwiek w django import plików działa w interpreter Pythona działa dobrze

6) zawartość 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) zmienna PYTHONPATH jest ustawiony na

echo $PYTHONPATH 
/root/djangoprojects/mysite 

8) DJANGO_SETTINGS_MODULE jest ustawiony na

echo $DJANGO_SETTINGS_MODULE 
mysite.settings 

9) treść sys.path jest

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

Jak zrobić Czy dodaję lokalizację ustawień do sys.path, tak aby była trwała w sesjach?

Przeczytałem wiele postów z osobami, które mają ten sam problem, a ja próbowałem dużo całkowicie mnie bije co do tego, co muszę zrobić.

Szukasz pomocy.

Dzięki z góry Ankur Gupta

Odpowiedz

5

Twojej konfiguracji apache powinien wyglądać następująco:

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

Należy zauważyć, że jedyna różnica jest "mysite.settings". Nie zapomnij ponownie uruchomić Apache po zmianie konfiguracji (restart apache2ctl). Aby uzyskać więcej informacji, patrz http://docs.djangoproject.com/en/dev/howto/deployment/modpython/.

+0

dokonał zmiany wzmiance więc teraz wydaje się, SetHandler python-Program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonOption django.root/mojawitryna PYTHONPATH "[ '/ root/djangoprojects /', '/ root/djangoprojects/mojawitryna', '/ root/djangoprojects/mysite/polls', '/ var/www'] + sys.path" PythonDebug Na dla restartu zrobiłem następujący /etc/init.d/apache2 restart sti Nie mam szczęścia. /etc/init.d/apache2 restart –

+0

dokonał zmiany ustawień na mysite.settings wciąż ten sam błąd. –

+1

może długi PythonPath myli mod_python. Wypróbuj właśnie PythonPath "['/ root/djangoprojects /'] + sys.path" Upewnij się również, że Apache ma prawo do odczytu pliku ustawień (uprawnienia do odczytu dla innych) i całej ścieżki do pliku (przeczytaj i wykonaj zezwolenie dla innych na/root,/root/djangoprojects i/root/djangoprojects/mysite). Choć byłoby lepiej przenieść cały projekt do lokalizacji poza/root, w końcu nie powinno tam być. –

0

Spróbuj zmienić na następujące kwestie:

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

użycie nie „/” na końcu zapisów PYTHONPATH (to może być problem, miałem problemów z tym przynajmniej na Windows).

Wpisy "/ root/djangoprojects/mysite", "/ root/djangoprojects/mysite/polls" nie są potrzebne, ponieważ będą odnosić się do modułów przez ich pełną nazwę (tj. Mysite.sttings oznacza moduł ustawień wewnątrz pakietu mysite, który jest właściwym sposobem uzyskania dostępu do niego w PythonPath/root/djangoprojects).

Powiązane problemy