Project

General

Profile

Actions

Wiki » History » Revision 3

« Previous | Revision 3/6 (diff) | Next »
Sofiane Mokrane, 10 Aug 2020 08:40


Guide de packaging de projets Python

Ce guide explique comment construire un package installable d’un projet python.
Il montre la structure du projet nécessaire pour la création d’un package, les fichiers qu’il faut ajouter, et enfin la génération du package python.

Un guide de génération d'un package est fourni en pj avec un exemple de projet : https://drive.google.com/file/d/1kQmhyI9cBtlRMuMNxLbuCwG-mpudlnhJ/view?usp=sharing

1 – On commence par la création d’un dossier qu’on nomme ici «ProjetPython» contenant un répertoire portant le nom du package «mon_package» qu’on veut construire. Dans un premier temps on aura la structure suivante :

ProjetPython
└── mon_package
└── init.py
Le fichier init.py est requis pour importer le répertoire en tant que package, et peut simplement être un fichier vide.

2 - Création des fichiers nécessaires pour le package dans le répertoire principal «ProjetPython».

ProjetPython
├── LICENSE
├── README.md
├── mon_package
│ └──__init__.py
├── setup.py
└── tests
Pour l’instant l’ensemble de ces fichiers créés peuvent être vide et la même chose pour le dossier test qui pourra contenir d’éventuels fichiers de test unitaires.

3 – Refactoring du code sous forme de classes et de module et mettre tous les fichiers code python dans le répertoire «mon_package»

4 - Création du fichier setup.py : ce fichier sert de script de construction de notre package par le module setuptools. C’est dans ce fichier qu’on va spécifier le nom du package, les fichiers python à inclure. Un exemple d’un fichier setup.py aura la structure suivante : =====================================

Cet exemple est non exhaustif, pour plus de détails : * https://packaging.python.org/guides/packaging-namespace-packages/ * https://packaging.python.org/tutorials/packaging-projects/ =====================================

5 - Ajouter un fichier requirements.txt au répertoire du projet dans lequel on spécifier les dépendances à ajouter lors de l’installation du package

6 - A cette étape on peut éditer les fichiers Readme et License

7 - Génération des archives du package qui peuvent être installés par la suite avec pip.

7.1 Mise à jour ou installation des modules setuptools et wheel
  • python3 -m pip install --user --upgrade setuptools wheel
7.2 Dans le répertoire ProjetPython on exécute la commande suivante pour la création des archives du package
    * python3 setup.py sdist bdist_wheel
7.3 A la fin de l’exécution, dans le même répertoire on au aura un un nouveau dossier «dist» contenant deux fichiers :
dist/
mon_package-0.0.1-py3-none-any.whl
mon_package-0.0.1.tar.gz

8 - Pour tester le package, il suffit d’installer l’archive .whl en local: * Pip install Path/ProjetPython/dist/mon_package-0.0.1-py3-none-any.whl

  • Dans le cas où on a des fichiers de dépendances du code autre que les fichiers .py, soit on ajoute au répertoire du projet (ProjetPython dans notre cas) le fichier MANIFEST.in:https://docs.python.org/fr/3/distutils/sourcedist.html , ou bien dans le cas des fichier lourds on peut les stocker sur un serveur et créer une fonction dowload pour les télécharger avec python en utilisant le module paramiko. **

=============================================================
Un exemple de projet est fournie dans le PackagingPythonProject.zip =============================================================
9 – Déploiement sur le serveur pypiserveur de kaisensdata :

9.1 Installation de module twine
9.2 Déploiement sur le serveur, en se positionnant dans le répertoire du projet :

Updated by Sofiane Mokrane over 5 years ago · 3 revisions