ImportError: aucun module nommé django.core.wsgi Apache + VirtualEnv + AWS + WSGI
j'essaie de publier mon site sur une Instance EC2 D'Amazon, et j'obtiens toujours une erreur de 500. Vraiment, je ne sais pas pourquoi.
//Les Fichiers Journaux
[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/apache/wsgi.py' cannot be loaded as Python module.
[Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/apache/wsgi.py'.
[Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last):
[Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/apache/wsgi.py", line 26, in <module>
[Sun Feb 17 23:12:48.066920 2013] from django.core.wsgi import get_wsgi_application
[Sun Feb 17 23:12:48.066945 2013] ImportError: No module named django.core.wsgi
//Fichiers De Configuration D'Apache
WSGIScriptAlias / /srv/www/app/mysite/apache/wsgi.py
WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages
WSGIProcessGroup mysite
<Directory /srv/www/app/mysite/apache/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<Directory /srv/www/app/mysite/apache/>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/static>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/media>
Order deny,allow
Allow from all
</Directory>
/ / wsgi.py
import os
import sys
import site
site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
path = '/srv/www/app/mysite'
if path not in sys.path:
sys.path.append(path)
8 réponses
je sais que c'est un vieux fil, mais je viens de tomber sur le même problème et je ne pense pas que ce soit causé par un paquet manquant. Comme la distribution de base de Django contient déjà le handler WSGI correct.
le problème ici est que quand wsgi.py il manque les paquets du site-paquets de votre virtualenv. (Si vous avez activé votre virtualenv, et fait pip installer django alors tout va bien. Vous avez le nécessaire django paquet.)
en ce qui me concerne, j'ai corrigé le problème en modifiant le sys.mon chemin Path/to/Project/Project/wsgi.py file.
vous devez ajouter votre projet dir et vos paquets de site virtualenv au système.Liste des chemins. Voici mon wsgi.py Fichier contenu dans mon projet (en parlant de wsgi.py créé avec django-admin.py start-project)... que j'ai eu à le modifier afin de le faire fonctionner avec Apache
# =====================
# wsgi.py file begin
import os, sys
# add the hellodjango project path into the sys.path
sys.path.append('<PATH_TO_MY_DJANGO_PROJECT>/hellodjango')
# add the virtualenv site-packages path to the sys.path
sys.path.append('<PATH_TO_VIRTUALENV>/Lib/site-packages')
# poiting to the project settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# wsgi.py file end
# ===================
Faire sûr:
vous avez ajouté mod_wsgi au dir des modules Apache mod_wsgi doit être compilé pour les versions OS, Apache et Python que vous avez
ajout de la commande load module dans votre httpd.conf pour charger le module mod_wsgi LoadModule wsgi_module modules/mod_wsgi.donc
configuré les spécificités de Django dans votre httpd.conf ou tout conf que vous incluez dans votre httpd.conf
sur la Base de la documentation comment utiliser Django avec Apache et mod_wsgi
WSGIScriptAlias / <PATH_TO_PROJECT>/hellodjango/hellodjango/wsgi.py
WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_VIRTUALENV>/Lib/site-packages
<Directory <PATH_TO_PROJECT>/hellodjango/hellodjango>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
J'espère que cela vous aidera. Il a travaillé pour moi.
ajoutez ceci au fichier de configuration D'Apache:
WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
pour moi, Ceci indique que Django n'a pas été installé sur le sever. Fixe à l'aide de
pip install Django
j'ai eu une erreur similaire, juste maintenant. Il s'avère que notre Code Django a été développé sur python 3.5, mais pour certaines raisons les personnes qui ont déployé notre serveur setup virtualEnv avec python 2.7. Nous nous sommes redéployés avec python 3.5 et tout a fonctionné pour nous
ci-Dessous a été le message d'erreur que j'ai reçu:
$ python serviceStartup.py
Traceback (most recent call last):
File "serviceStartup.py", line 10, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
espérons que cela aidera avec quelqu'un voyant un message d'erreur similaire!
vous avez tout très bien configuré, mon ami, il suffit de donner à l'utilisateur apache la permission d'accéder à la fois aux dirs projet et virtualenv.
Exemple:
sudo chown -R www-data:www-data /home/ubuntu/projects
sudo chown -R www-data:www-data /home/ubuntu/virtualenv
ceci a résolu mon problème avec ImportError: No module named django.core.wsgi
(dossiers virtualenvs) et ImportError: No module named <project-name>.settings
(dossiers de projets)
A première vue, je suis désolé pour mon anglais. J'ai également abordé ce problème, et je l'ai résolu en changeant "wsgi.py' file to:
import os import django from django.core.handlers.wsgi import WSGIHandler os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eisentask.settings.production") django.setup(set_prefix=False) application = WSGIHandler()
Pour moi, c'était une des variables qui doivent être programmés (pour windows) :
set PYTHONHOME=F:\path\to\python
set PYTHONPATH=F:\path\to\python
assurez-vous que vous utilisez le module uwsgi installé dans le virtualenv, par exemple:
/home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi