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)
29
demandé sur Cœur 2013-02-18 03:25:47

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:

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

  2. ajout de la commande load module dans votre httpd.conf pour charger le module mod_wsgi LoadModule wsgi_module modules/mod_wsgi.donc

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

31
répondu Rabah B 2014-03-19 10:24:14

ajoutez ceci au fichier de configuration D'Apache:

WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
7
répondu Matt 2013-02-17 23:41:38

pour moi, Ceci indique que Django n'a pas été installé sur le sever. Fixe à l'aide de

pip install Django
4
répondu Zags 2014-11-18 20:05:58

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!

2
répondu Lingster 2017-10-10 21:56:05

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)

0
répondu Cássio 2015-11-26 02:01:39

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()
0
répondu user9205618 2018-01-11 18:39:58

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
-1
répondu Stephane L 2017-05-26 10:12:40

assurez-vous que vous utilisez le module uwsgi installé dans le virtualenv, par exemple:

/home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi
-1
répondu Gregory 2017-06-13 20:50:03