Introduction
Ce guide explique comment préparer, construire et publier un package Python sur PyPI en utilisant twine
et build
qui sont eux aussi des package déployés sur PyPi mdrr. Ducoup on va voir ça plus en détail
1. Prérequis
Avant de commencer, assure-toi d'avoir :
- Python 3.6 ou supérieur installé
pip
,setuptools
,twine
etbuild
installés :
pip install --upgrade pip setuptools twine build
- Un compte sur PyPI
- Un jeton API PyPI si nécessaire (Générer un jeton API)
2. Structure d'un Projet
Un package Python typique doit avoir la structure minimale suivante :
mon_package/
│── mon_package/
│ ├── __init__.py
│ ├── main.py
│── tests/
│ ├── test_main.py
│── setup.py
│── pyproject.toml
│── README.md
│── LICENSE
Exemple de setup.py
from setuptools import setup, find_packages
setup(
name="mon_package", # Nom du package
version="0.1.0", # Version du package
packages=find_packages(), # Recherche automatique des sous-packages
install_requires=[
"scapy", # Dépendances requises
"pyshark"
],
entry_points={
"console_scripts": [
"mon_package=mon_package.capture:main"
]
},
author="margoul1",
author_email="ton.email@example.com",
description="Un outil de capture de paquets réseau en Python",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
url="https://github.com/ton-utilisateur/mon_package",
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
)
Exemple de pyproject.toml
(optionnel mais recommandé)
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
3. Construire le Package
Exécute la commande suivante pour générer les fichiers de distribution (.tar.gz
et .whl
) :
python -m build
Cela créera un dossier dist/
contenant :
dist/
├── mon_package-0.1.0-py3-none-any.whl
├── mon_package-0.1.0.tar.gz
4. Publier sur PyPI
Option 1 : Publication avec mot de passe
twine upload dist/*
Tu seras invité à entrer ton nom d'utilisateur et ton mot de passe PyPI.
Option 2 : Publication avec un jeton API
Si tu utilises un jeton API, exécute :
twine upload -u __token__ -p TON_JETON dist/*
5. Tester l'Installation
Une fois publié, vérifie que ton package est installable depuis PyPI :
pip install mon_package
6. Tester sur TestPyPI avant Publication
Si tu veux tester avant de publier sur PyPI officiel, utilise TestPyPI :
-
Publier sur TestPyPI :
twine upload --repository testpypi dist/*
-
Installer depuis TestPyPI :
pip install --index-url https://test.pypi.org/simple/ mon_package
7. Mettre à Jour un Package
Si tu fais une mise à jour du package, incrémente la version dans setup.py
, puis reconstruis et republie :
python -m build
twine upload dist/*
Ton package est maintenant disponible sur PyPI et installable via pip install mon_package
!
Conclusion
T'as maintenant ton package que les gens (ou toi) vont pouvoir installer depuis absolument partout bien joué. Si tu veux pousser le vice de l'automatisation tu peux le mettre sur github et configurer une Github Action ou sur Gitlab (Recommandé).