95 votes

Comment empaqueter une application python pour la rendre installable par pip ?

Je suis en train d'écrire une application django pendant mon temps libre pour une compétition de footy-tips que nous organisons au travail. Je me suis dit que j'allais utiliser ce temps à bon escient, et me mettre à jour sur virtualenv, pip, le packaging, django 1.3, et comment écrire une application facilement redistribuable. Jusqu'à présent, tout va bien.

J'en suis à la partie emballage. Beaucoup d'applications django sur GitHub par exemple sont regroupées (à peu près) de la même manière. Je vais utiliser django-uni-forms à titre d'exemple.

Je présume que l'on peut supposer que le MANIFEST.in et setup.py sont les seuls éléments dont pip a besoin pour faire son travail. I

Les fichiers d'empaquetage requis sont-ils généralement générés, ou sont-ils créés à la main ? Les dépendances peuvent-elles être décrites, puis installées également ? Mon application dépend de django-uni-forms et je l'ai listé dans un requirements.txt dans mon application que j'ai utilisé pour installer la dépendance ; mais est-ce quelque chose dont le système de packaging peut s'occuper ?

Quelles sont les étapes à suivre pour empaqueter mon application de manière à ce que pip puisse l'installer ainsi que toutes les dépendances ?

88voto

arie Points 8860

Oui, MANIFEST.in et setup.py devrait être suffisant.

Cet article de blog contient vraiment de bonnes informations sur ce sujet : Empaquetage d'une application réutilisable Django

Et voici un autre bon aperçu détaillé qui m'a beaucoup aidé : Guide de l'utilisateur de Python Packaging

Les conseils pour inclure vos fichiers statiques (modèles) sont particulièrement importants, car cela peut ne pas être évident au premier abord.

Et oui, vous pouvez spécifier les paquets requis dans votre fichier setup.py qui sont automatiquement récupérés lors de l'installation de votre application.

Par exemple :

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

Il est évident que nous avons maintenant deux endroits où les dépendances sont définies, mais cela ne signifie pas nécessairement que ces informations sont dupliquées : setup.py vs requirements.txt

Avec cette configuration, votre paquet devrait être installable via pip .


Comme Pierre l'a noté dans les commentaires, il existe désormais une section correspondante dans la documentation officielle de Django : Emballage de votre application

Et puis il y a ce guide "complètement incomplet", qui donne vraiment un excellent aperçu de l'empaquetage et du téléchargement d'un paquet vers PyPI : Partager votre travail d'amour : PyPI Quick And Dirty

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