Contactez-nous

Publication sur PyPI (Python Package Index)

Apprenez à publier votre package Python sur PyPI (Python Package Index), le dépôt officiel des packages Python. Suivez les étapes pour créer un compte, préparer votre package, construire les distributions, et utiliser twine pour le téléversement.

PyPI : le dépôt officiel des packages Python

PyPI (Python Package Index) est le dépôt central de logiciels pour le langage de programmation Python. C'est un vaste répertoire de packages Python, créés et maintenus par la communauté.

Lorsque vous utilisez `pip install nom_du_package`, `pip` recherche le package sur PyPI, le télécharge, et l'installe.

En publiant votre propre package sur PyPI, vous le rendez accessible à tous les utilisateurs de Python dans le monde. Ils pourront l'installer facilement avec `pip`.

PyPI est géré par la Python Software Foundation (PSF).

Etapes pour publier un package sur PyPI

Voici les étapes générales pour publier un package sur PyPI :

  1. Créer un compte sur PyPI : Rendez-vous sur pypi.org et créez un compte utilisateur (gratuit). Vous aurez besoin d'un nom d'utilisateur et d'un mot de passe. Il existe aussi un serveur de test : test.pypi.org pour faire des essais sans impacter le serveur principal.
  2. Préparer votre package : Assurez-vous que votre code est correctement structuré (voir les sections précédentes sur la structure des projets, les modules et les packages). Créez un fichier `pyproject.toml` (ou, moins recommandé, `setup.py`) pour décrire votre projet et ses dépendances.
  3. Construire les distributions : Créez les distributions source (sdist) et/ou binaire (wheel) de votre package. Utilisez l'outil `build` : `python -m build`.
  4. Installer twine : `twine` est un outil recommandé pour téléverser des packages sur PyPI de manière sécurisée. Installez-le avec `pip install twine`.
  5. Téléverser le package avec twine : Utilisez la commande `twine upload dist/*` pour téléverser les distributions (créées à l'étape 3) sur PyPI. `twine` vous demandera votre nom d'utilisateur et votre mot de passe PyPI.
  6. Vérifier l'installation : Une fois le téléversement terminé, vous devriez pouvoir installer votre package depuis PyPI avec `pip install nom_de_votre_package`.

Créer un compte PyPI et configurer twine

Avant de publier, vous devez créer un compte sur pypi.org. Vous pouvez le faire en vous rendant sur le site web et en suivant les instructions.

Une fois que vous avez un compte, vous pouvez configurer `twine` pour utiliser vos identifiants. La méthode recommandée est d'utiliser un *token API* plutôt que votre mot de passe. Vous pouvez créer un token API sur le site web de PyPI, dans les paramètres de votre compte.

Vous pouvez aussi créer un fichier `.pypirc` dans votre répertoire personnel (`$HOME/.pypirc` sur Unix/macOS, `%USERPROFILE%\.pypirc` sur Windows) avec le contenu suivant (en remplaçant `votre_token_api` par votre token) :

[pypi]
username = __token__
password = votre_token_api

Cela permet à `twine` de s'authentifier automatiquement sans que vous ayez à entrer votre mot de passe à chaque fois.

Construire les distributions (sdist et wheel)

Comme expliqué dans la section précédente, vous devez construire les distributions de votre package (sdist et/ou wheel) avant de les téléverser sur PyPI.

La méthode recommandée est d'utiliser l'outil `build` :

python -m build

Cela créera les distributions dans le répertoire `dist/`.

Téléverser le package avec twine

Une fois que vous avez les distributions (dans le répertoire `dist/`), vous pouvez utiliser `twine` pour les téléverser sur PyPI.

Utilisez la commande suivante :

twine upload dist/*
  • `twine upload` : La commande pour téléverser des fichiers sur PyPI.
  • `dist/*` : Indique à `twine` de téléverser tous les fichiers du répertoire `dist/` (c'est-à-dire les distributions que vous avez construites).

`twine` vous demandera votre nom d'utilisateur et votre mot de passe PyPI (ou utilisera les informations de votre fichier `.pypirc` si vous l'avez configuré).

Il est recommandé d'utiliser HTTPS pour téléverser vos packages. `twine` utilise HTTPS par défaut.

Si le téléversement réussit, votre package sera disponible sur PyPI, et les utilisateurs pourront l'installer avec `pip install votre_package`.

Bonnes pratiques et considérations

Voici quelques bonnes pratiques et considérations pour la publication sur PyPI :

  • Choisissez un nom de package unique : Vérifiez que le nom que vous choisissez pour votre package n'est pas déjà utilisé sur PyPI.
  • Utilisez une version sémantique (Semantic Versioning) : Suivez les conventions de versionnement sémantique (MAJOR.MINOR.PATCH). Incrémentez la version majeure lorsque vous faites des changements incompatibles avec les versions précédentes, la version mineure lorsque vous ajoutez des fonctionnalités, et la version patch lorsque vous corrigez des bugs.
  • Incluez une description claire et concise : La description de votre package (dans `pyproject.toml` ou `setup.py`) sera affichée sur PyPI. Assurez-vous qu'elle décrit clairement le rôle et les fonctionnalités de votre package.
  • Incluez un fichier README : Un fichier README (généralement au format Markdown) est essentiel pour expliquer comment installer et utiliser votre package.
  • Choisissez une licence : Spécifiez la licence sous laquelle vous distribuez votre code (par exemple, MIT, GPL, Apache). Cela permet aux utilisateurs de savoir comment ils peuvent utiliser votre code.
  • Testez votre package : Avant de publier votre package, assurez-vous qu'il fonctionne correctement et qu'il passe tous vos tests unitaires.
  • Utilisez un environnement virtuel : Développez et testez votre package dans un environnement virtuel pour éviter les conflits de dépendances.
  • Testez l'installation : Après avoir publié votre package, essayez de l'installer dans un environnement virtuel propre pour vérifier que tout fonctionne comme prévu.
  • Utilisez le serveur de test PyPI (test.pypi.org) : Avant de publier sur le vrai PyPI, vous pouvez utiliser le serveur de test pour vous assurer que tout fonctionne correctement. Pour cela, utilisez l'option `--repository-url` de `twine` : `twine upload --repository-url https://test.pypi.org/legacy/ dist/*`.

Mettre à jour un package existant

Pour mettre à jour un package existant, il suffit d'incrémenter le numéro de version (dans `pyproject.toml` ou `setup.py`), de reconstruire les distributions (`python -m build`), et de les téléverser à nouveau avec `twine upload dist/*`.