2015-01-08 5 views
11

Ich habe einen Ordner namens python2.7 innerhalb von lib in der virtuellen Umgebung.Wo sollte WSGIPythonPath in meinem virtualenv zeigen?

Nachdem ich ein halbes Dutzend Tutorials gelesen habe, kann ich nicht genau herausfinden, worauf ich den WSGIPythonPath hinweisen soll. Ich habe einige auf site-packages zeigen, aber einige sind ein Doppelpunkt : getrennte Liste gewesen.

Syntax error on line 1019 of /etc/httpd/conf/httpd.conf: 
WSGIPythonPath cannot occur within <VirtualHost> section 

Wo sollte WSGIPythonPath in meinem virtualenv zeigen?

+0

Was ist Ihr Setup? Versuchen Sie eine Webanwendung über Apache (über Mod_WSGI) auszuführen? Oder ein anderer Webserver? Wo genau wollen Sie den "WSGIPythonPath" einstellen? – Timusan

+0

Apache und mod_wsgi, ja.Versuchen Sie, "WSGIPythonPath" in der Apache-Konfigurationsdatei für '' – user83039

+0

zu setzen. Und verwenden Sie Mod_WSGI im Daemon-Modus oder im Embedded-Modus? Es kann auch hilfreich sein, Ihren VirtualHost/Apache-Konfigurationseintrag zusammen mit Ihrer Frage zu veröffentlichen. – Timusan

Antwort

12

Sie erhalten den Fehler, da WSGIPythonPath Richtlinie nicht innerhalb der Virtual Kontext verwendet werden. Sie müssen es in Ihrer Haupt-Apache-Konfigurationsdatei deklarieren. Wenn Sie immer noch auf die Verzeichnisse in Ihrem virtualenv innerhalb des VirtualHost-Kontexts zeigen möchten, verwenden Sie stattdessen die Option WSGIDaemonProcess Direktive, damit Sie Ihre relevanten Python-Verzeichnisse deklarieren können.

Zum Beispiel: Ihre virtuellen Host-Konfigurationsdatei wie folgt aussehen sollte:

<VirtualHost *:80> 
ServerName example.com 
CustomLog logs/example.com-access_log common 
ErrorLog logs/example.com-error_log 

WSGIDaemonProcess example.com python-path=/virtualenvpathto/site-packages:/pathto/exampleprojecthome 
WSGIProcessGroup example.com 

... 
</VirtualHost> 

Der vollständige Kolon : wird verwendet, wenn Sie mehr als ein Python-Verzeichnisse haben Sie $ hinzugefügt werden möchten, PYTHON_PATH Umgebungsvariable, so dass import example.foo funktioniert gut. Im obigen Beispiel gibt es zwei Verzeichnisse, sie können mehr oder weniger davon abhängig sein, wie Sie Ihr Projekt eingerichtet haben.

Wenn Sie Windows verwenden, verwenden Sie Semikolon; anstelle des vollständigen Doppelpunkts.

Ich hoffe, das hilft.

0

Hier ist die offizielle Dokumentation ist: https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/#using-a-virtualenv

eine virtualenv¶

verwenden Wenn Sie Ihr Projekt Python-Abhängigkeiten innerhalb eines virtualenv installieren, Sie den Pfad zu dieser virtualenv der orts- hinzufügen müssen Pakete Verzeichnis auch zu Ihrem Python-Pfad. Fügen Sie dazu einen zusätzlichen Pfad zu Ihrer WSGIPythonPath-Direktive hinzu, mit mehreren Pfaden, die durch einen Doppelpunkt (:) getrennt werden, wenn ein UNIX-ähnliches System verwendet wird, oder ein Semikolon (;) wenn Windows verwendet. Wenn ein Teil eines Verzeichnispfad ein Leerzeichen Zeichen enthält, muss die komplette Argument Zeichenfolge WSGIPythonPath sein zitiert:

> WSGIPythonPath 
> /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages 

Stellen Sie sicher, den richtigen Pfad zu Ihrem virtualenv geben, und ersetzen python3 .X mit der korrekten Python-Version (zB python3.4).

+2

Dieser Link wird nicht verwendet Best Practices. Sie sollten '' WGIPythonHome'' verwenden, um bei Verwendung des eingebetteten Modus und der '' python-home''-Option auf die virtuelle Umgebung zu verweisen, wenn der Daemon-Modus verwendet wird. Siehe: http://blog.dscpl.com.au/2014/09/using-python-virtual-umgebungen-with.html –