12 votes

Outils de gestion de projet/construction pour un projet Django ?

Venant du développement Java où les outils de construction et de gestion de projet abondent, j'aimerais savoir ce qui est disponible pour Django. J'aimerais vraiment utiliser quelque chose comme Maven pour construire des choses, mais y a-t-il une autre façon de faire ?

Je suis vraiment à la recherche de ce qui suit :

  • Construction de la ligne de commande : mvn install est juste si facile et si cool.
  • Tests en ligne de commande. J'aimerais intégrer cette application dans quelque chose comme Hudson pour l'intégration continue, puisque je suis un dur à cuire comme ça.
  • Déploiement des médias sur le serveur de test local (JS, CSS, images, etc.)

Est-ce actuellement possible avec Maven ou un autre outil ? Je me lance dans un projet d'envergure et j'aimerais disposer d'un système de gestion de projet et de construction comme Maven pour permettre au projet de se développer au fil du temps.

7voto

Deux outils me viennent à l'esprit, qui sont tous deux des outils python génériques - ils ne doivent pas nécessairement fonctionner avec Django spécifiquement :

  • Tissu . Nous l'utilisons ; il nous permet d'écrire des commandes à distance comme si nous étions connectés en SSH, de télécharger du code, etc. Il n'y a pas grand chose que vous ne pouvez pas faire et parce que c'est essentiellement un script bash écrit en python, il est très facile de se lancer. Mais c'est aussi un bash script écrit en python, ce qui signifie que vous pouvez importer des parties de votre application django, exécuter vos tests ou faire tout ce que python peut faire dans le processus d'exécution de votre déploiement.
  • Buildout . Je ne l'ai pas utilisé, mais notre développeur frontal django m'a dit que c'était absolument l'outil à utiliser. À vue de nez, il s'agit soit de la même idée, soit d'un équivalent légèrement plus abstrait et plus orienté python.

Je suis sûr qu'il existe d'autres formules disponibles. Le meilleur conseil que je puisse vous donner est de les évaluer tous brièvement et de choisir celui qui correspond le mieux à votre scénario/ style de travail en équipe. Notez qu'il s'agit principalement d'outils de déploiement - les constructions en python n'ont pas vraiment de sens, puisque vous ne compilez pas de code python.

En ce qui concerne les éléments liés à l'infrastructure de communication, il existe trois commandes de django que vous devez connaître :

  • ./manage.py test exécute vos tests à partir de tous les tests.py des fichiers. Il s'agit essentiellement d'améliorations spécifiques à django pour unittest un paquet python.
  • ./manage.py collectstatic rassemble les fichiers statiques dans un répertoire de votre choix ; très utile pour rassembler tous les éléments nécessaires à l'existence d'un serveur de médias statiques. Jetez un coup d'œil à le guide des fichiers statiques pour savoir comment cela fonctionne.
  • Vous devez Sud pour celui-ci, ./manage.py schemamigration app --auto && ./manage.py migrate app - cela applique les modifications du modèle au schéma sql sous-jacent. En gros, si vous vous contentez de modifier un modèle sans utiliser south, Django sera très contrarié car le nouveau champ ne correspondra pas à l'ancien schéma sql et il ne pourra pas faire persister votre modèle. Les migrations de schémas, que South prend en charge, vous permettent de mettre à niveau une base de données existante et peuplée. Cela vaut la peine de les faire à la main avant de les automatiser.
  • Je dois également souligner que vous pouvez écrire commandes de gestion personnalisées d'exécuter ./manage.py whatever you like . Cela a un bon potentiel - j'ai utilisé les commandes de gestion comme commande à exécuter dans une tâche cron, par exemple. Vous pourriez également créer des commandes interactives pour les administrateurs de votre application et, bien sûr, pour le déploiement et les tests.

La manière de les gérer dépend vraiment de la configuration dont vous disposez et des outils que vous choisissez.

Sur la compilation : Ce qui se rapproche le plus de la compilation avec python est freeze, alias py2exe ou cxfreeze qui produisent des binaires. Sachez cependant que tout ce qu'ils font est de stocker le bytecode de python dans un exe et de le faire passer par l'interpréteur, qui est de toute façon un objet partagé. En outre, vous ne pouvez pas cxfreeze une application django, puisque django lui-même utilise des importations dynamiques qui se produisent au moment de l'exécution et ne peuvent donc pas être évaluées par cxfreeze, qui est essentiellement un outil de compilation. Ne considérez donc pas la construction comme une tâche à accomplir. Vous pourriez voir .pyc fichiers apparaissant dans votre répertoire - python convertit votre script en bytecode python si des changements y ont été apportés depuis le dernier pyc. Si aucune modification n'a été apportée, il charge le fichier pyc de la dernière fois. Le bytecode Python est ce qui est exécuté, donc ce n'est pas vraiment une accélération en termes de performance, juste un temps de chargement.

0voto

Max Peterson Points 283

Si vous avez besoin d'un outil pour gérer et reproduire votre environnement python (Django), je vous recommande de vous tourner vers pip con virtualenv comme alternative au Buildout.

Ce site Article de SaltyCrane décrit l'utilisation de pip avec Django. L'article décrit le processus sur Ubuntu mais nous utilisons une configuration similaire sur Ubuntu et OSX.

Nous avons l'expérience de buildout et de pip et avons trouvé pip plus facile, plus fiable et plus facile à faire évoluer que buildout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X