9. Modules et Paquets
import,from,as,__name__,__init__.py,pip,uv, PYTHONPATH.
9.1 Modules
Tout fichier .py est un module.
mon_module.py :
def saluer(nom):
return f"Bonjour {nom}"
PI = 3.14159Utilisation :
import mon_module
print(mon_module.saluer("Alice")) # "Bonjour Alice"
print(mon_module.PI) # 3.141599.2 Syntaxes d’import
import math # math.sqrt(2)
from math import sqrt, pi # sqrt(2)
from math import * # tout (déconseillé)
import numpy as np # alias
from math import sqrt as racine # alias spécifique9.3 __name__ et __main__
# mon_script.py
def main():
print("Exécuté directement")
if __name__ == "__main__":
main()__name__ == "__main__"si exécuté en script.__name__ == "mon_script"si importé.
9.4 Chemins de recherche
import sys
print(sys.path) # liste des dossiers où Python chercheModifiable :
sys.path.append("/chemin/vers/mes/modules")Ou via PYTHONPATH :
export PYTHONPATH=/chemin/vers/modules:$PYTHONPATH9.5 Paquets
Dossier contenant __init__.py (peut être vide) :
mon_paquet/
├── __init__.py # exécuté à l'import du paquet
├── module_a.py
└── sous_paquet/
├── __init__.py
└── module_b.py
from mon_paquet import module_a
from mon_paquet.sous_paquet import module_b__all__ contrôle ce qu’exporte from mon_paquet import * :
__all__ = ["module_a"] # dans __init__.py9.6 pip / uv
pip install numpy
pip install -r requirements.txt
uv pip install numpy # plus rapide
uv add numpy # avec pyproject.toml9.7 Environnements virtuels
python3 -m venv .venv
source .venv/bin/activate
uv venv # avec uv
source .venv/bin/activate9.8 Rechargement
import importlib
importlib.reload(mon_module) # recharger un module modifié9.9 Bonnes pratiques
- Un module = une responsabilité.
- Éviter
from x import *(pollue l’espace de noms). - Utiliser des imports absolus (
paquet.module) plutôt que relatifs (.module). - Structurer par fonctionnalité.