it-swarm.com.de

ImportError: Kein Modul mit Name Django.core.wsgi Apache + VirtualEnv + AWS + WSGI

Ich versuche, meine Website auf einer Amazon EC2-Instanz zu veröffentlichen, und ich erhalte weiterhin einen Fehler von 500. Ich weiß nicht warum.

//Protokolldateien

    [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

// Apache-Konfigurationsdateien

    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)
30
abisson

Ich weiß, dass dies ein alter Thread ist, aber ich bin gerade mit dem gleichen Thema zusammengestoßen und denke nicht, dass dies durch ein fehlendes Paket verursacht wird. Da die Django-Kerndistribution bereits den richtigen Wsgi-Handler enthält.

Das Problem hierbei ist, dass bei der Ausführung von wsgi.py die Pakete der Site-Pakete aus Ihrer virtualenv fehlen. (Wenn Sie Ihre Virtualenv aktiviert haben und die Pip-Installation von Django abgeschlossen haben, ist alles in Ordnung. Sie haben die erforderlichen Django-Pakete).

Soweit es mich betrifft, habe ich das Problem behoben, durch das der sys.path in meiner Datei Path/to/Project/Project/wsgi.py geändert wurde. 

Sie müssen Ihr Projektverzeichnis und Ihre Virtualenv-Site-Pakete an die Liste sys.path anhängen. Hier ist meine wsgi.py-Datei in meinem Projekt (Sprechen über die mit Django-admin.py Projekt) ... das ich modifizieren musste, damit es mit Apache funktioniert

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

Stelle sicher:

  1. sie haben mod_wsgi zu den Apache-Modulen dir mod_wsgi hinzugefügt, die für Ihre Betriebssystem-, Apache- und Python-Version kompiliert werden müssen

  2. fügte den Befehl zum Laden des Moduls in Ihre httpd.conf ein, um das Modul mod_wsgi zu laden LoadModule wsgi_module modules/mod_wsgi.so

  3. konfigurierte Django-Besonderheiten in Ihrer httpd.conf oder ein beliebiges Conf in Ihrer httpd.conf

Basierend auf der Dokumentation So verwenden Sie Django mit Apache und 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>

Hoffe das hilft. Es hat für mich funktioniert.

32
Rabah B

Fügen Sie dies der Apache-Konfigurationsdatei hinzu:

WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
7
Matt

Für mich bedeutete dies, dass Django nicht auf dem Server installiert war. Feste via

pip install Django
4
Zags

Ich hatte gerade einen ähnlichen Fehler. Es hat sich herausgestellt, dass unser Django-Code auf Python 3.5 entwickelt wurde, aber aus bestimmten Gründen die Leute, die unser Server-Setup virtualEnv mit Python 2.7 implementiert haben. Wir haben mit Python 3.5 umgeschaltet und alles hat für uns funktioniert

Unten war die Fehlermeldung, die ich erhalten habe: 

$ 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

Hoffe, das hilft bei jedem, der eine ähnliche Fehlermeldung sieht!

2
Lingster

Auf den ersten Blick tut mir mein Englisch leid. Ich bin auch mit diesem Problem konfrontiert und habe es gelöst, indem ich die Datei 'wsgi.py' in Folgendes geändert habe:

 import os 
 import Django 
 aus Django.core.handlers.wsgi import WSGIHandler 


 os.environ.setdefault ("Django_SETTINGS_MODULE", "eisentask.settings.production") 
 Django.setup (set_prefix = False) 

 Application = WSGIHandler () 
0
user9205618

Sie haben alles sehr gut konfiguriert, mein Freund. Sie müssen lediglich dem Apache-Benutzer die Berechtigung zum Zugriff auf Projekt- und Virtualenv-Verzeichnisse geben.

Beispiel:

Sudo chown -R www-data:www-data /home/ubuntu/projects
Sudo chown -R www-data:www-data /home/ubuntu/virtualenv

Dies löste mein Problem mit ImportError: No module named Django.core.wsgi (Virtualenvs-Ordnern) und ImportError: No module named <project-name>.settings (Projektordnern).

0
Cássio