Comprendre et Utiliser les Packages Python
À mesure que les projets grandissent, vous voudrez peut-être organiser les modules connexes dans une seule hiérarchie de répertoires. C'est l'utilité des packages. Un package est un répertoire qui contient un fichier spécial nommé __init__.py (qui peut être vide). La présence de ce fichier indique à Python de traiter le répertoire comme un package.
Créons un package pour contenir notre module_a.
Tout d'abord, créez un nouveau répertoire nommé my_package dans le répertoire ~/project. Vous pouvez le faire en faisant un clic droit dans l'explorateur de fichiers et en sélectionnant "Nouveau Dossier".
mkdir my_package
Ensuite, créez le fichier __init__.py requis à l'intérieur du nouveau répertoire my_package.
touch my_package/__init__.py
Maintenant, déplacez module_a.py dans le répertoire my_package. Vous pouvez faire glisser et déposer le fichier dans l'explorateur de fichiers.
mv module_a.py my_package/
La structure de votre projet devrait maintenant ressembler à ceci :
~/project/
├── main.py
├── hello.py
└── my_package/
├── __init__.py
└── module_a.py
Avec cette structure de package en place, nous devons mettre à jour la manière dont nous importons module_a dans notre script main.py. Pour importer un module à partir d'un package, vous utilisez des noms de modules pointés, comme nom_du_package.nom_du_module.
Ouvrez main.py et modifiez-le pour importer la fonction greet depuis my_package.module_a :
from my_package.module_a import greet
greet("Package")
Enregistrez le fichier et exécutez-le :
python3 main.py
Vous devriez voir la sortie suivante :
Hello, Package from module_a!
Ceci montre comment importer un objet spécifique à partir d'un module à l'intérieur d'un package. Alternativement, vous pourriez importer le module lui-même :
## Alternative import style
import my_package.module_a
my_package.module_a.greet("Alternative")
Les packages sont un outil puissant pour organiser les grandes bases de code, telles que les bibliothèques et les frameworks, en une structure claire et maintenable.