Le stockage de la virtualenv répertoire dans le répertoire git sera, comme vous l'avez remarqué, vous permettent de déployer l'ensemble de l'application il vous suffit de faire un git clone (en plus de l'installation et la configuration d'Apache/mod_wsgi). Un potentiellement importantes problème avec cette approche est que sur Linux, le chemin d'accès complet obtient codé en dur dans le venv de l'activer, django-admin.py, easy_install, et pip scripts. Cela signifie que votre virtualenv ne sera pas entièrement de travail si vous souhaitez utiliser un autre chemin, peut-être exécuter plusieurs serveurs virtuels sur un même serveur. Je pense que le site web peut travailler avec les chemins de mal dans ces fichiers, mais vous avez des problèmes la prochaine fois que vous avez essayé d'exécuter le programme pep.
La solution, déjà donné, est de stocker suffisamment d'informations dans git, de sorte que, pendant le déploiement, vous pouvez créer le virtualenv et faire le nécessaire pip installe. Généralement, les gens courent pip freeze
pour obtenir la liste puis le stocker dans un fichier nommé requirements.txt. Il peut être chargé avec des pip install -r requirements.txt
. RyanBrady déjà montré comment vous pouvez de la chaîne de la déployer des déclarations en une seule ligne:
virtualenv --no-site-packages --distribute .env && source .env/bin/activate && pip install -r requirements.txt
Personnellement, je viens de le mettre dans un script shell que j'ai exécuté après avoir fait le git clone ou git pull.
Le stockage de la virtualenv répertoire rend aussi un peu plus compliqué à gérer pip mises à niveau, que vous allez avoir à ajouter/supprimer et valider les fichiers résultant de la mise à niveau. Avec un requirements.txt fichier, il suffit de changer les lignes appropriées dans requirements.txt et ré-exécutez pip install -r requirements.txt
. Comme l'a déjà noté, ce qui réduit également "s'engager spam".