33 votes

ImportError: Aucun module nommé django.core.handlers.wsgi lors de l’installation de config django mod_wsgi sur apache

J'ai essayé d'installer django fonctionne avec apache et mod_wsgi, mais obtenir cette erreur:

ImportError: No module named django.core.handlers.wsgi,

J'ai réussit à lire qu'il peut être erreur de l'utilisateur...

Sur la console (ssh), avec un accès root, je n'ai pas de problèmes d'accès à django.de base.les gestionnaires.wsgi , mais quand apache demande pour y accéder, il ne peut pas

Mon django.wsgi:

import os
import sys

sys.path.append('my/rep/parents/of/my/project')
sys.path.append('/usr/lib/python2.4/site-packages/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'montest.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'


import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Mon vhost.conf:

Alias /media/ my/rep/parents/of/my/projet/montest/media/

<Directory my/rep/parents/of/my/projet/montest/media>
    Order deny,allow
    Allow from all
</Directory>

WSGIScriptAlias /montest my/rep/parents/of/my/projet/django.wsgi

<Directory my/rep/parents/of/my/projet>
    Order deny,allow
    Allow from all
</Directory>

EDIT :

Ok mon résultat pour ldd mod_wsgi.donc

linux-gate.so.1 => (0x0013c000) 
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00663000) 
libpthread.so.0 => /lib/libpthread.so.0 (0x00bff000) 
libdl.so.2 => /lib/libdl.so.2 (0x0023b000) 
libutil.so.1 => /lib/libutil.so.1 (0x00420000) 
libm.so.6 => /lib/libm.so.6 (0x00110000) 
libc.so.6 => /lib/libc.so.6 (0x00240000) /lib/ld-linux.so.2 (0x0059f000) 

Je décide donc de tester mon mod_wsgi installer avec le test.wsgi

test.wsgi

def application(environ, start_response): 
    status = '200 OK'
    output = 'Hello world, I am a wsgi app!' 
    response_headers = [('Content-Type', 'text/plain'), ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 
    return [output]

mon vhost.conf:

WSGIScriptAlias /test /var/www/vhosts/mydomain.fr/subdomains/django/httpdocs/test.wsgi 
<Directory /var/www/vhosts/mydomain.fr/subdomains/django/httpdocs> 
    Order allow,deny 
    Allow from all 
    Options +ExecCGI 
</Directory> 

Il fonctionne maintenant... ensuite, je vais essayer de mon django.wsgi config

16voto

kpyadav Points 151

J'ai résolu le problème en ajoutant l'emplacement de packages-site, où j'ai conservé le sous-répertoire django (/Library/Python/2.7/site-packages) dans WSGIDaemonProcess:

 WSGIDaemonProcess www.example.com processes=2 threads=15 display-name=%{GROUP} 
    python-path=/Library/python/2.7/site-packages
 

Si vous utilisez le mode serveur intégré, utilisez dans httpd.conf :

 WSGIPythonPath /Library/python/2.7/site-packages
 

4voto

Graham Dumpleton Points 23711

Pourquoi essayez-vous même d'ajouter le répertoire site-packages dans sys.path? Si votre mod_wsgi est compilé avec Python 2.4, il devrait déjà être dans le répertoire site-packages. On dirait que votre mod_wsgi n'est même pas compilé avec Python 2.4.

Courir:

 ldd mod_wsgi.so
 

Utilisez le fichier mod_wsgi.so que vous avez installé pour déterminer la version de Python pour laquelle il est compilé et publier le résultat.

3voto

Bob Points 2207

J'ai déjà eu ce problème auparavant, car le processus Apache / mod_wsgi n'était pas autorisé à lire les modules. Vous pouvez rendre votre répertoire site-packages / django lisible de tout le monde ou ajouter d'autres autorisations utilisateur / groupe appropriées.

2voto

Banjer Points 2806

J'ai résolu ce problème en ajoutant le répertoire parent qui contient mon installation de Django à sys.path dans wsgi.py. Voici mes paramètres, FWIW:

/home/banjer/myproject/wsgi.py :

 import os, sys
sys.path.append('/home/banjer/django')
sys.path.append('/home/banjer') # this line solved it
sys.executable = '/usr/local/python-2.7.2/bin/python'
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
 

1voto

drrota Points 11

Vérifiez que votre site-package autorisations de fichier. Aucune des deux solutions n'a fonctionné pour moi jusqu'à ce que je réparer les autorisations de fichier. Voici ce que mon ssl_error_log fichier:

mod_wsgi (pid=986, process='OSQA', application='xxxxxx.yyy.com|/forum'): Loading WSGI script '/data/http/osqa/osqa.wsgi'. 
mod_wsgi (pid=986): Target WSGI script '/data/http/osqa/osqa.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=986): Exception occurred processing WSGI script '/data/http/osqa/osqa.wsgi'. Traceback (most recent call last):   File "/data/http/osqa/osqa.wsgi", line 14, in <module>
            import django.core.handlers.wsgi  ImportError: No module named django.core.handlers.wsgi

Mais j'ai résolu mon problème de serveur. Si vous pouvez le faire sur la ligne de commande, puis cette solution est pour vous:

python
>>> import django.core.handlers.wsgi
>>>

Ce qui a fonctionné, c'est que je chmod go+rx site-packages libpython* (cela peut-être exagéré, mais il a travaillé pour moi.)

Je suis en cours d'exécution comme httpd d'apache.l'utilisateur, et en cours d'exécution python en tant que root, pouvait voir les paquets juste bien, mais ma autorisations n'ont pas été correctement paramétré (à lire par tout le monde), et c'est pourquoi httpd ne pouvait pas lire les paquets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X