web-dev-qa-db-fra.com

Virtualenv et contrôle de version source

J'ai récemment démarré un projet Django et j'ai rapidement réalisé que virtualenv serait vraiment utile pour de nombreuses raisons. J'ai configuré virtualenv et mon projet, mais maintenant je me demande quel fichier je dois ajouter à ma source contrôle (dans mon cas, Mercurial). Dois-je ajouter tous les fichiers dans le dossier venv? Comment puis-je m'assurer qu'un collègue peut cloner et commencer à travailler immédiatement sans avoir à configurer à nouveau l'env?

82
Martin

Vous générez un fichier "requis" (généralement requirements.txt) que vous engagez avec votre projet:

pip freeze > requirements.txt

Ensuite, chaque développeur configurera son propre virtualenv et exécutera:

pip install -r requirements.txt
90
Chris Pratt

Tous ces tracas liés à l'environnement sont assez courants lorsque vous faites du développement python/Django! J'ai traversé tous ces problèmes et j'ai testé quelques solutions! Choses que j'ai testées:

  1. Projet en cours d'exécution local
  2. Projet en cours d'exécution dans virtualenv
  3. Projet exécuté sur une machine virtuelle
  4. Projet en cours d'exécution dans une machine virtuelle, en utilisant vagrant

La meilleure solution que j'ai trouvée était # 4! parce que l'entreprise avec laquelle je travaillais, chaque personne de l'équipe a un OS différent, toutes sortes de fenêtres, mac et linux, et pour installer toutes les dépendances pour chaque environnement ça prend du temps! Nous avons donc décidé d'essayer virtualenv, ce qui est vraiment bien! mais chaque personne doit toujours configurer son propre environnement. Le problème dans virtualenv est que toutes les sources python se trouvent dans l'environnement que vous créez! Donc je ne pousserais pas ces fichiers vers un contrôle de version source! La meilleure solution était # 4, car c'était exactement ce que J'avais besoin, Vagrant utilise Chef pour configurer votre environnement, il vous suffit donc d'écrire quelques recettes, et de laisser vagrant les exécuter pour vous! Ensuite, u Poussez ces recettes vers SCM, puis lorsque la personne suivante récupère les fichiers de SCM et recharge le = VM toutes les dépendances seront automatiquement installées!

J'ai un article de blog expliquant plus sur le sujet et j'ai créé n Django projet vide dans github afin que vous puissiez obtenir cela pour avoir un point de départ de votre projet utilisant vagabond.

http://arthurnn.com/blog/2011/11/25/easy-Django-quickstart/ (lien plus actif, donc lié à Wayback Machine)

[~ # ~] modifier [~ # ~]

La solution de Chris Pratt est également une bonne solution, mais certaines bibliothèques ne sont pas aussi simples à installer dans tous les systèmes d'exploitation, par exemple, beaucoup de gens sur Mac rencontrent des problèmes lorsqu'ils souhaitent installer MySQLdb-python. qui est une bibliothèque vraiment commune, mais si tout le monde dans votre équipe doit passer du temps à résoudre ces problèmes, ce n'est pas bon du tout!

6
Arthur Neves