Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Python - Créer et publier un package python sur un dépôt

Date de publication 28 févr. 2019
Ce mois nous allons voir comment packager votre librairie python notamment pour la publier sur pypi, un gestionnaire de librairies python.
Un package python est un "zip" qui contient les informations de votre librairie. On peut l'assimiler à un Jar en Java. Celui ci contient les informations du package comme sa description, ses dépendances, sa version de python ...
Ce format est utilisé par pypi, le dépôt officiel de python qui est géré par pip

Pour créer ce package il faut créer un fichier setup.py, à la racine de votre site, similaire à celui ci
Il existe 2 manières pour créer ce package, soit en egg soit wheel
Il est préférable d'utiliser wheel qui est l'extension (.whl) la plus utilisée actuellement. De plus il est régi par la pep 427

Il est possible de créer 2 types de package :
  • setup.py sdist crée une source distribution permettant de générer une archive avec les fichiers sources, données, setup.py... Cela permet de le recompiler sur n'importe quelle plateforme. Après le build un dossier dist sera créé avec le tar.gz à l'intérieur
  • setup.py bdist (and bdist_*) crée un built distribution: il inclut les fichiers compilés ou binaires avec vos données mais sans le setup.py. Il va générer une archive dans le dossier dist qui dépendra de la platforme et de la version de Python. Il suffit simplement d'extraire l'archive sur le serveur pour que l'installation soit opérationnelle.
    Dans le cas de notre package wheel on fait un bdist_wheel, il va créer l'archive au format wheel
Pensez à bien ajouter le fichier __init__.py dans le dossier où vous avez vos fichiers à inclure !

Pour uploader le package sur un repo il faut commencer par mettre .pypirc à la racine de votre projet ou alors dans le home si vous travaillez sous Windows

Et ensuite il suffit de pousser le package sur le repo avec cette commande :
Pour cette dernière commande vous remarquez 2 nouveaux éléments apparus dans le dossier dist :
  • un .tar.gz qui correspond à l'archive des sources
  • un .whl qui est le build du package
Il faut toujours pousser les 2 extensions sur le repository. Comme cela si l'installation échoue il est possible de récupérer les sources et de compiler le package.

Il existe un outil twine qui permet de remplacer le setup.py upload avec une transaction sécurisée

Il faut installer cette librairie
Attention car PyPi ne gère pas le Markdown, or nous avons besoin de lire le README.md pour renseigner le champ long_description du setup.py. Il faut donc le convertir avec
On vérifie que tout est correct avec
Et on pousse sur le serveur avec
blog comments powered by Disqus