2009-08-01 7 views
14
de paramètres de réglages

L'application fonctionne très bien en utilisant django serveur interne mais lorsque j'utilise mod_python apache + je reçois l'erreur ci-dessousquestion Django débutant le déploiement - ImportError: Impossible d'importer


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 

Voici les informations nécessaires

1) répertoire du projet:/root/djangoprojects/monsite

2) la liste des répertoires de/root/djangoprojects/monsite

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) répertoire App:/root/djangoprojects/monsite/sondages

de la liste des répertoires 4)/racine/djangoprojects/monsite/sondages

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) Partout dans le django d'importation de fonctionnement du système de fichiers dans l'interpréteur python fonctionne très bien

6) le contenu de 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) variable PYTHONPATH est réglé sur

echo $PYTHONPATH 
/root/djangoprojects/mysite 

8) DJANGO_SETTINGS_MODULE est réglé sur

echo $DJANGO_SETTINGS_MODULE 
mysite.settings 

9) le contenu de sys.path est

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

Comment faire J'ajoute l'emplacement de paramètres à sys.path de telle sorte qu'il persiste entre les sessions? J'ai lu pas mal de poste avec des gens ayant le même problème et j'ai essayé beaucoup de choses me bat complètement quant à ce que je dois faire.

Vous cherchez de l'aide.

Merci à l'avance Ankur Gupta

Répondre

5

La configuration de votre apache devrait ressembler à ceci:

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

Notez que la seule différence est le "mysite.settings". N'oubliez pas de redémarrer apache une fois que la configuration a changé (apache2ctl restart). Voir http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ pour plus d'informations.

+0

fait le changement que vous avez parlé maintenant il semble que SetHandler python-programme PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonOption django.root/monsite PythonPath "[ '/ root/djangoprojects /', '/ root/djangoprojects/monsite', '/ root/djangoprojects/monsite/sondages', '/ var/www'] + sys.path" PythonDebug Sur pour redémarrer, j'ai fait ce qui suit: /etc/init.d/apache2 restart sti ll pas de chance. /etc/init.d/apache2 restart –

+0

fait la modification des paramètres de mysite.settings toujours la même erreur. –

+1

peut-être que le long PythonPath confond mod_python. Essayez juste d'avoir PythonPath "['/ root/djangoprojects /'] + sys.path" Aussi, assurez-vous que Apache a le droit de lire le fichier de paramètres (autorisation de lecture pour les autres) et le chemin complet jusqu'à ce que le fichier (lire et exécuter les permissions pour les autres sur/root,/root/djangoprojects et/root/djangoprojects/mysite). Bien qu'il serait préférable de déplacer l'ensemble du projet à un emplacement extérieur/racine, après tout, il ne devrait pas être là. –

0

Essayez de changer à ce qui suit:

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

utilisation non «/» à la fin des entrées de PythonPath (qui peut être un problème, j'ai eu des problèmes avec au moins sous Windows). Les entrées '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls' ne sont pas nécessaires puisque vous allez faire référence à vos modules par leur nom complet (c'est-à-dire mysite).sttings signifie le module settings dans le paquetage mysite, qui est la manière correcte d'y accéder dans PythonPath/root/djangoprojects).