2010-08-11 5 views
5

Je commence récemment à utiliser virtualenvwrapper et crééconfiguration de déploiement de Django

mkdir ~/.virtualenvs 
mkvirtualenv example.com 

Virtualenvwarpper créer un virtualenv automatique nommé example.com sous ~/.virtualenv donc c'est le conteneur central pour tous virtualenvs. Après que j'ai installé django et quelques autres paquets via pip et mon site est à

/srv/www/example.com/public_html/ 

Dois-je mettre mon site à ~/.virtualenv/example.com sinon comment pourrais-je utiliser mon example.com virtualenv avec mon site sous /srv/www/example.com/public_html. Pourriez-vous me montrer une configuration apache mod_wsgi pour ce déploiement? Merci

Répondre

4

Lire:

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

Il peut ne pas être suffisante utiliser juste site.addsitedir() car il ne gère pas certains problèmes de commande. Il vaut mieux utiliser la directive/option de configuration fournie par mod_wsgi pour les ajouter. Sinon, si la commande devient un problème, vous devrez ajouter du code dans le script WSGI qui réorganise sys.path si nécessaire.

+0

Cela a bien fonctionné pour moi, mais pas jusqu'à ce que je me rende compte que j'ai besoin des deux parties, même si je veux utiliser mon virtualenv de base pour mon application. Vous devez donc définir "WSGIPythonHome/usr/local/pythonenv/BASELINE" dans la configuration globale apache, et vous devez également ajouter la commande site.addsitedir au début de votre script .wsgi, même si vous envisagez d'utiliser votre base de référence. Les docs référencent les libs python avec 2.5 mais ils sont probablement maintenant 2.6 pour vous: site.addsitedir ('/ usr/local/pythonenv/BASELINE/lib/python2.6/site-packages') –

+0

Vous ne devriez pas avoir besoin de le faire dans les deux endroits. Quelque chose d'autre est faux si vous deviez le faire. –

2

Dans votre script WSGI:

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

(Adjust en fonction de votre version de Python, etc.)

+0

Ce n'est pas suffisant. Voir la réponse de Graham. –

Questions connexes