2010-08-11 11 views
5

beginne ich vor kurzem virtualenvwrapper zu bedienen und erstelltDjango virtualenv Deployment-Konfiguration

mkdir ~/.virtualenvs 
mkvirtualenv example.com 

Virtualenvwarpper eine virtualenv erstellen automatisch unter dem Namen example.com ~/.virtualenv so dass dies für alle virtualenvs der zentrale Behälter ist. Nachdem als ich installiert django und einige andere Pakete über pip und meine Website ist auf

/srv/www/example.com/public_html/ 

Muss ich meine Seite zu ~/.virtualenv/example.com setzen, wenn nicht, wie konnte ich meine verwenden example.com virtualenv mit meiner Website unter /srv/www/example.com/public_html. Können Sie mir eine Apache mod_wsgi-Konfiguration für diese Bereitstellung zeigen? Dank

Antwort

4

lesen:

http://code.google.com/p/modwsgi/wiki/VirtualEnvironments

Es ist nicht ausreichend sein kann, nur site.addsitedir() zu verwenden, da es sich nicht um bestimmte Bestellprobleme handelt. Sie verwenden besser die Konfigurationsanweisung/Option, die von mod_wsgi bereitgestellt wird, um sie hinzuzufügen. Andernfalls, wenn die Reihenfolge zu einem Problem wird, müssen Sie Code in das WSGI-Skript einfügen, das sys.path nach Bedarf neu anordnet.

+0

Dies funktionierte gut für mich, aber erst, als ich erkannte, dass ich beide Teile brauche, obwohl ich meine Basisvirtualenv für meine Anwendung verwenden möchte. Sie müssen also "WSGIPythonHome/usr/local/pythonenv/BASELINE" in der globalen apache config setzen, und dann müssen Sie auch den Befehl site.addsitedir am Anfang Ihres .wsgi-Skripts hinzufügen, auch wenn Sie Ihren verwenden möchten Grundlinie. Die Dokumente verweisen auf die Python-Bibliotheken mit 2.5, aber sie sind wahrscheinlich jetzt 2.6 für Sie: site.addsitedir ('/ usr/local/pythonv/BASELINE/lib/python2.6/site-packages') –

+0

Sie sollten es nicht tun müssen an beiden Orten. Etwas anderes ist falsch, wenn du das tun musst. –

2

In Ihrem WSGI Skript:

import site 
site.addsitedir('/home/username/.virtualenvs/example.com/lib/python2.5/site-packages') 

(Passen Sie je nach Ihrer Python-Version, etc.)

+0

Das ist nicht genug. Siehe Grahams Antwort. –