2012-08-13 13 views
5

Ich verwende django + nginx + uwsgi. Aus irgendeinem Grund kann ich uWSGI nicht starten, ohne die Home-Option zu setzen und auf die virtuelle Umgebung zu zeigen. Wenn ich uWSGI ohne es starte, sagt es, dass es das Modul django.core.wsgi nicht finden kann, wie wenn der Python-Pfad leer wäre (aber django 1.4 ist systemweit installiert).Kann uWSGI-Server nicht ohne virtualenv (ImportError) starten

Wie kann ich es beheben?

+1

Es ist nichts falsch. Sie müssen die Option 'home' verwenden, um die virtuelle Umgebung anzugeben, in der django installiert ist. Andernfalls wird uwsgi auf einer systemweiten Ebene betrieben, auf der django nicht installiert ist. Sehen Sie sich das [uwsgi-Beispiel] (http://projects.unbit.it/uwsgi/wiki/VirtualEnv) an. –

+1

@ TimmyO'Mahony Wenn Sie sich meine Frage genau anschauen, können Sie tatsächlich sehen, dass ich erwähnt habe, dass Django "systemweit" installiert ist. – DataGreed

+0

Ich werde es bearbeiten, um es klarer zu machen – DataGreed

Antwort

15

Da ich auch auf dieses Problem eingeredet habe, wollen wir eine Antwort für alle schreiben. :) Das Problem ist, dass der uwsgi-Master-Prozess beim Starten im Kaiser-Modus (systemweit) die richtige Umgebung für Python (PYTHONPATH) nicht laden kann (oder will). Mit virtualenv geben Sie die Umgebung an. Ohne es müssen Sie die pythonpath Variable setzen, sogar mehrmals auf die systemweiten Python-Pfade zeigen.

Nur als Beispiel, für mein System ist es:

pythonpath = /usr/local/lib/python2.7/dist-packages 
pythonpath = /usr/lib/python2.7 

(die INI-Syntax)

+0

Ich stoße auf diesen Fehler im MacOS-System, aber nicht in Centos6 mit derselben Konfigurationsdatei. Repariere es nach dem Hinzufügen von 'virtualenv' in der Konfigurationsdatei. Kannst du diese Situation erklären? Der laufende Befehl ist '/ Pfad_zu_venv/bin/uwsgi-y uwsgi.conf' –

+0

@SiminJie tut mir leid, ich benutze MacOS nicht. Und ich würde es nicht als Server verwenden. –