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.14159

Utilisation :

import mon_module
print(mon_module.saluer("Alice"))      # "Bonjour Alice"
print(mon_module.PI)                   # 3.14159

9.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écifique

9.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 cherche

Modifiable :

sys.path.append("/chemin/vers/mes/modules")

Ou via PYTHONPATH :

export PYTHONPATH=/chemin/vers/modules:$PYTHONPATH

9.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__.py

9.6 pip / uv

pip install numpy
pip install -r requirements.txt
uv pip install numpy          # plus rapide
uv add numpy                  # avec pyproject.toml

9.7 Environnements virtuels

python3 -m venv .venv
source .venv/bin/activate
 
uv venv                       # avec uv
source .venv/bin/activate

9.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é.

🔗 ← Retour au cours · ← précédent · Suivant →