ImportError: Kein Modul namens django.core.wsgi für uwsgi

Ich benutze uwsgi für mein Django (Version = 1.4) Projekt, aber es gibt einen Fehler, wenn ich laufe

uwsgi --ini django.ini 
 Von django.core.wsgi import get_wsgi_application
     ImportError: Kein Modul namens django.core.wsgi

Aber ich könnte django.core.wsgi wie folgt importieren:

 >>> import django.core.wsgi 

Die Datei django.ini:

 [Uwsgi]
 Chdir = / path / to / my / app
 Module = app.wsgi: anwendung
 Master = True
 Vakuum = True
 Max-requests = 5000
 Socket = 127.0.0.1: 9000

Wsgi.py

 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings") # This application object is used by any WSGI server configured to use this # file. This includes Django's development server, if the WSGI_APPLICATION # setting points here. from django.core.wsgi import get_wsgi_application application = get_wsgi_application() 

6 Solutions collect form web for “ImportError: Kein Modul namens django.core.wsgi für uwsgi”

Wenn Sie virtualenv verwenden, um nach home zu schicken django.ini:

 home=/path/to/venv/ 

Um es durch Webbrowser zu testen:

 uwsgi --ini django.ini --protocol=http 

Der Fehler ImportError: No module named django.core.wsgi entsteht generell, wenn uwsgi versucht, die Datei wsgi.py zu lesen und kommt an die Zeile:

 from django.core.wsgi import get_wsgi_application 

Es kann nicht finden, diese diese Module, weil Django nicht installiert ist, oder wenn es installiert ist, ist es nicht in PYTHONPATH.

Wenn dein Projekt in einem virtualenv ist und Django nur in diesem virtualenv installiert ist, ist der Weg zu den Django Modulen nicht im PYTHONPATH und damit kann Python es nicht finden.

Wenn du neugierig bist, kannst du den folgenden Code in die Datei wsgi.py einfügen und den PYTHONPATH sehen:

 import os print '===== sys.path / PYTHONPATH =====' for k in sorted(os.environ.keys()): v = os.environ[k] print ('%-30s %s' % (k,v[:70])) 

Wenn Sie eine lokale Version von uwsgi ausführen, die im virtualenv installiert ist, wird der Pfad korrekt eingestellt, aber wenn Sie eine globale Version von uwsgi ausführen, wird es normalerweise nicht den PYTHONPATH richtig eingestellt.

Sie können uWSGI den Weg zum virtualenv erzählen, und es wird herausfinden, die richtige PYTHONPATH. Verwenden --virtualenv einfach das --virtualenv Befehlszeilenargument, zB:

 uwsgi --http :8001 --module wsgi --virtualenv /home/jdoe/myvirtualenv 

(Die folgenden Argumente ist genau das gleiche wie –virtualenv: –venv, –home, -H)

Überraschenderweise hat die Einstellung $ VIRTUAL_ENV keine Auswirkung auf PYTHONPATH

Merkwürdigerweise, wenn man das –virtualenv-Argument nicht benutzt, wird die Umgebungsvariable $VIRTUAL_ENV korrekt gesetzt. Testen Sie dies durch Einfügen in wsgi.py:

 print os.environ['VIRTUAL_ENV'] 

Dies wird gedruckt:

 /home/jdoe/myvirtualenv 

Aber der PYTHONPATH ist nicht richtig eingestellt und enthält nichts aus dem virtualenv.

Ich kann nicht erklären, warum das so ist.

Da hast du die Antwort angenommen, die virtualenv erwähnt, scheint es, dass du es benutztest. django in diesem Fall sicher, dass django in Ihrem virtualenv Verzeichnis installiert ist ( venv . venv ).

Sie können es separat von pip unter virtualenv installieren oder manuell eine symbolische Verknüpfung erstellen (wenn Sie auf Unix-artigem System sind) zu venv 's site-packages

 ln -s /usr/path_to_django venv/lib/python2.7/site-packages/django 

In meinem Fall habe ich die Django Applikation installiert und alles andere für Python3, aber das uwsgi benutzt Python2. Überprüfen Sie einfach das Protokoll beim Ausführen uwsgi ob es mit Python2 oder Python3, und installieren Sie uwsgi, wenn es nicht konsistent ist. Suchen Sie nach der Zeile ähnlich wie unten Zeile in uwsgi Startup Log.

Python version: 3.4.3 (default, Oct 14 2015, 20:31:36) [GCC 4.8.4] VS Python version: 2.7.6 (default, Jun 22 2015, 18:01:27) [GCC 4.8.2]

Ich habe diesen Fehler erhalten, weil ich die virtuelle Umgebung in einem freigegebenen Ordner von virtualbox erstellt habe, der keine symbolischen Links zuließ. Ich habe einige Fehler erhalten, aber alles schien zu funktionieren, so dass ich fortfuhr, bis ich diesen Fehler bekam. Das Problem wurde gelöst, als ich meine virtuelle Umgebung neu erstellt habe, stellte sicher, dass es keine Fehler gab und zeigte uwsgi auf den Ordner.

Wenn Sie gunicorn auf beide sudo apt-get install gunicorn und (venv) pip install gunicorn , verwenden Sie sudo apt-get remove gunicorn und starten Sie Ihre virtuelle Umgebung. Auf diese Weise hat es für mich gearbeitet.

  • Remote Hotplug Python Debugger
  • Nicht erkannte Befehlszeilenoption '-rdynamic' auf GCC v4.9.2
  • UWSGI + Flasche + boto - Fadensicherheit
  • UWSGI AJAX, eine Anforderung lesen
  • UWSGI - Verschiedene Harakiri Timeout für Django Admin
  • Wie setze ich Unterverzeichnis in nginx mit Django ein
  • Was ist der Vorteil, mehrere Threads pro UWSGI-Prozess zu laufen?
  • Django, Virtualenv, nginx + uwsgi Import-Modul wsgi Fehler
  • 'Ascii' Codec kann nicht decodieren Fehler, wenn Pip zu installieren uwsgi
  • UWSGI + NGINX 502 Bad Gateway
  • Python subprocess.Popen langsam unter uWSGI
  • Python ist die beste Programmiersprache der Welt.