Le stockage du répertoire virtualenv dans git vous permettra, comme vous l'avez noté, de déployer toute l'application en faisant simplement un clone git (plus l'installation et la configuration d'Apache / mod_wsgi). Un problème potentiellement important avec cette approche est que sous Linux, le chemin complet est codé en dur dans les scripts activate, django-admin.py, easy_install et pip de venv. Cela signifie que votre virtualenv ne fonctionnera pas entièrement si vous souhaitez utiliser un chemin différent, peut-être pour exécuter plusieurs hôtes virtuels sur le même serveur. Je pense que le site Web peut fonctionner avec les mauvais chemins dans ces fichiers, mais vous rencontrerez des problèmes la prochaine fois que vous essayerez d'exécuter pip.
La solution, déjà donnée, consiste à stocker suffisamment d'informations dans git pour que, pendant le déploiement, vous puissiez créer le virtualenv et effectuer les installations pip nécessaires. Généralement, les gens courent pip freeze
pour obtenir la liste, puis la stockent dans un fichier nommé requirements.txt. Il peut être chargé avec pip install -r requirements.txt
. RyanBrady a déjà montré comment vous pouvez enchaîner les instructions de déploiement sur une seule ligne:
# before 15.1.0
virtualenv --no-site-packages --distribute .env &&\
source .env/bin/activate &&\
pip install -r requirements.txt
# after deprecation of some arguments in 15.1.0
virtualenv .env && source .env/bin/activate && pip install -r requirements.txt
Personnellement, je viens de les mettre dans un script shell que je lance après avoir fait le git clone ou git pull.
Le stockage du répertoire virtualenv facilite également la gestion des mises à niveau pip, car vous devrez ajouter / supprimer et valider manuellement les fichiers résultant de la mise à niveau. Avec un fichier requirements.txt, il vous suffit de modifier les lignes appropriées dans requirements.txt et de réexécuter pip install -r requirements.txt
. Comme déjà indiqué, cela réduit également le "commit spam".