1. Qu'est-ce qu'un package Python ?
Pour comprendre les packages Python, nous allons brièvement examiner les scripts et les modules. Un « script » est quelque chose que vous exécutez dans le shell pour accomplir une tâche définie. Pour écrire un script, vous devez saisir votre code dans votre éditeur de texte préféré et l'enregistrer avec l'extension .py. Vous pouvez ensuite utiliser la commande python dans un terminal pour exécuter votre script.
Un module, en revanche, est un programme Python que vous importez, soit en mode interactif, soit dans vos autres programmes. « Module » est en réalité un terme générique pour le code réutilisable.
Un package Python se compose généralement de plusieurs modules. Physiquement, un package est un dossier contenant des modules et peut-être d'autres dossiers qui peuvent eux-mêmes contenir davantage de dossiers et de modules. Conceptuellement, c'est un espace de noms. Cela signifie simplement que les modules d'un package sont liés entre eux par un nom de package, par lequel ils peuvent être référencés.
Pour revenir à notre définition précédente d'un module en tant que code réutilisable et importable, nous notons que chaque package est un module, mais que chaque module n'est pas un package. Un dossier de package contient généralement un fichier nommé __init__.py qui indique en gros à Python que ce répertoire est un package! Le fichier init peut être vide ou contenir du code à exécuter lors de l'initialisation du package.
Package et Bibliothèque: Pour Python, une bibliothèque n'est pas aussi clairement définie qu'un package ou un module, mais une bonne règle générale est que chaque fois qu'un package a été publié, il peut être appelé bibliothèque.
2. Comment créer un package en Python ?
La création de packages en Python vous permet d'organiser votre code en modules réutilisables et gérables. Voici un bref aperçu de la façon de créer des packages:
- Créer un répertoire : commencez par créer un répertoire (dossier) pour votre package. Ce répertoire servira de racine à la structure de votre package.
- Ajouter des modules : dans le répertoire du package, vous pouvez ajouter des fichiers Python (modules) contenant votre code. Chaque module doit représenter une fonctionnalité ou un composant distinct de votre package.
- Fichier d'initialisation : incluez un fichier __init__.py dans le répertoire du package. Ce fichier peut être vide ou contenir un code d'initialisation pour votre package. Il signale à Python que le répertoire doit être traité comme un package.
- Sous-packages : vous pouvez créer des sous-packages dans votre package en ajoutant des répertoires supplémentaires contenant des modules, ainsi que leurs propres fichiers __init__.py.
- Importation : pour utiliser les modules de votre package, importez-les dans vos scripts Python à l'aide de la notation par points. Par exemple, si vous avez un module nommé module1.py dans un package nommé monpackage, vous importerez sa fonction comme ceci : from monpackage.module1 import greet.
- Distribution : si vous souhaitez distribuer votre package pour que d’autres puissent l’utiliser, vous pouvez créer un fichier setup.py à l’aide de la bibliothèque setuptools de Python. Ce fichier définit les métadonnées de votre package et spécifie comment il doit être installé.
3. Structure d'un Package
Un package Python typique a la structure suivante :
1 2 3 4 5 6 7 |
my_package/ __init__.py module1.py module2.py subpackage/ __init__.py submodule1.py |
- my_package/ : Le répertoire principal du package.
- __init__.py : Un fichier spécial qui marque le répertoire comme un package Python. Il peut être vide ou contenir du code d'initialisation pour le package.
- module1.py, module2.py : Des modules Python contenant des fonctions, classes, ou variables.
- subpackage/ : Un sous-package à l'intérieur du package principal, avec sa propre structure de modules.
4. Exemple d'usage d'un package Python
Supposons que nous voulons créer un package pour effectuer des opérations mathématiques de base. Voici comment nous pourrions organiser cela:
4.1 Structure du package
1 2 3 4 |
operations/ __init__.py addition.py multiplication.py |
- operations/__init__.py : Ce fichier peut être vide ou contenir des importations pour rendre certaines fonctions ou classes accessibles directement depuis le package.
- operations/addition.py : Contient des fonctions liées à l'addition.
1 2 3 4 |
# operations/addition.py def add(a, b): return a + b |
operations/multiplication.py : Contient des fonctions liées à la multiplication.
1 2 3 4 |
# operations/multiplication.py def mult(a, b): return a * b |
4.2 Utilisation du package
Nous pouvons maintenant utiliser ce package dans un autre script Python dela façon suivante:
- Importation : Nous importons les fonctions add et mult depuis les modules addition et multiplication du package operations.
- Utilisation : Nous pouvons appeler ces fonctions dans notre script comme si elles faisaient partie du script lui-même, mais en réalité, elles sont organisées dans des modules au sein du package.
1 2 3 4 5 6 7 8 9 10 |
# main.py from operations.addition import add from operations.multiplication import mult result_add = add(4, 5) result_mult = mult(2, 5) print("Addition result:", result_add) print("Multiplication result:", result_mult) |
5. Différence entre un module et un package Python
En Python, un module et un package sont des concepts liés à l'organisation du code, mais ils servent à des fins différents.
5.1 Module
Un module est un simple fichier Python (.py) qui peut contenir des variables, des fonctions, des classes, et du code exécutable. Un module vous permet de structurer et d' organiservotre code en morceaux réutilisables. Par exemple, si vous avez un fichier math_result.py, c'est un module, et vous pouvez l'importer dans d'autres fichiers pour utiliser les fonctions qu'il contient.
Exemple
1 2 3 4 5 6 |
# math_result.py def add(a, b): return a + b def subtract(a, b): return a - b |
5.2 Package
Un package est un répertoire qui contient plusieurs modules et un fichier spécial __init__.py. Le fichier __init__.py permet de traiter le répertoire comme un package Python et peut contenir du code d'initialisation pour le package. Un package peut aussi contenir des sous-packages, ce qui permet d'organiser encore plus le code.
Exemple
1 2 3 4 5 6 7 |
math_tools/ __init__.py basic_operations.py advanced_operations.py subPackage/ __init__.py advanced_concept.py |
Younes Derfoufi
CRMEF OUJDA