
Packaging et distribution de code Python
Apprenez à packager et à distribuer votre code Python. Découvrez la structure d'un projet Python (setup.py, requirements.txt), comment créer des packages distribuables (wheels, source distributions), et comment publier sur PyPI (Python Package Index).
Structure d'un projet Python (`setup.py`, `requirements.txt`) : organisez votre code pour la distribution
Lorsque vous voulez distribuer votre code Python (que ce soit un module, un package, ou une application), il est important de l'organiser d'une manière standard, afin que d'autres développeurs puissent facilement l'installer et l'utiliser.
Un projet Python typique pour la distribution contient les fichiers et répertoires suivants :
- Un répertoire contenant le code source de votre module ou package (généralement nommé du même nom que votre module/package).
- Un fichier `setup.py` (ou `pyproject.toml` avec les outils modernes) à la racine du projet. Ce fichier contient des métadonnées sur votre projet (nom, version, auteur, description, etc.), et des instructions pour construire et installer votre package.
- Un fichier `requirements.txt` (facultatif, mais recommandé) à la racine du projet. Ce fichier liste les dépendances de votre projet (les autres packages Python dont votre projet a besoin pour fonctionner).
- Un fichier `README` (généralement au format Markdown ou reStructuredText) qui décrit votre projet et explique comment l'utiliser.
- Un fichier `LICENSE` qui spécifie la licence de votre projet (par exemple, MIT, GPL, Apache, etc.).
- Un répertoire `tests` (facultatif, mais recommandé) contenant les tests unitaires de votre projet.
Nous verrons comment créer ces fichiers et répertoires, et comment les organiser.
Création de packages distribuables (wheels, source distributions) : préparez votre code pour l'installation
Une fois que vous avez structuré votre projet, vous pouvez créer des packages distribuables, c'est-à-dire des archives qui contiennent votre code et les métadonnées nécessaires pour l'installer.
Il existe deux principaux types de packages distribuables en Python :
- Source distributions (sdist) : une archive (généralement `.tar.gz`) qui contient le code source de votre projet, ainsi que les fichiers `setup.py` et `requirements.txt`. Lorsqu'un utilisateur installe une sdist, le code est compilé (si nécessaire) et installé sur sa machine.
- Wheels (whl) : une archive (généralement `.whl`) qui contient une version pré-compilée de votre code, ainsi que les métadonnées. Les wheels sont plus rapides à installer que les sdists, car elles ne nécessitent pas de compilation.
Vous pouvez créer des packages distribuables en utilisant la commande `python setup.py sdist bdist_wheel` (si vous utilisez `setup.py`) ou `python -m build` (si vous utilisez `pyproject.toml`). Ces commandes créent les archives dans un répertoire `dist` à la racine de votre projet.
Nous verrons comment créer des sdists et des wheels, et quelles sont les différences entre les deux.
Publication sur PyPI (Python Package Index) : partagez votre code avec le monde
Le Python Package Index (PyPI) est un dépôt centralisé de packages Python. C'est là que la plupart des développeurs Python publient leurs packages, et c'est là que `pip` va chercher les packages à installer.
Pour publier votre package sur PyPI, vous devez d'abord créer un compte sur le site web de PyPI (pypi.org).
Ensuite, vous pouvez utiliser l'outil `twine` pour téléverser (upload) votre package sur PyPI. Vous devez d'abord installer `twine` avec `pip install twine`. Puis, vous pouvez utiliser la commande `twine upload dist/*` pour téléverser toutes les archives contenues dans le répertoire `dist`.
`twine` vous demandera votre nom d'utilisateur et votre mot de passe PyPI. Une fois que votre package est téléversé, il sera disponible pour tous les développeurs Python, qui pourront l'installer avec `pip install votre_package`.
Il est important de bien documenter votre package sur PyPI, en fournissant une description claire et concise, des instructions d'installation et d'utilisation, et des exemples de code. Vous pouvez également ajouter des classifiers (des métadonnées qui décrivent votre package) pour aider les utilisateurs à le trouver.
Nous verrons comment créer un compte PyPI, comment utiliser `twine` pour publier votre package, et comment documenter votre package sur PyPI.