Voyages       https://fr.bhlyqj.com

L'instruction `import` de Python : Modules, espaces de noms et bonnes pratiques

En Python, import est comment vous amenez du code d'un module dans un autre. Ce n'est pas « main import » — ce terme n'existe pas en Python. Voici comment ça marche réellement, avec les motifs que vous utiliserez quotidiennement.

Syntaxe d'import de base

import nom_module 

Cela charge nom_module et le lie à une variable dans votre espace de noms actuel. Vous accédez à son contenu avec la notation pointée :

 import math
math.sqrt(16) # 4.0
math.pi # 3.14159... 

Motifs d'import courants

1. Importer le module (Recommandé par défaut)

 import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1,2,3]})
arr = np.array([1,2,3]) 

Avantages : Explicite, lisible, évite conflits de noms, montre l'origine.

2. Importer des noms spécifiques

 from math import sqrt, pi
sqrt(16) # 4.0 — pas de préfixe nécessaire
pi # 3.14159... 

Utilisez quand : Vous utilisez quelques noms intensivement. Évitez : from module import * (pollution espace de noms).

3. Importer avec alias

 import matplotlib.pyplot as plt
import seaborn as sns 

Conventions standards (pd, np, plt, sns, tf, torch) rendent le code instantanément lisible.

4. Imports conditionnels / paresseux

 # Importez les dépendances lourdes seulement quand nécessaire
def analyser_donnees():
    import pandas as pd # Import local — démarrage plus rapide si inutilisé
    return pd.read_csv('donnees.csv') 

Comment import fonctionne sous le capot

  1. Vérifie sys.modules — si déjà chargé, retourne module en cache
  2. Trouve le module via sys.path (répertoire courant, PYTHONPATH, site-packages, stdlib)
  3. Exécute le code du module — lance les instructions de niveau supérieur (def, class, assignations)
  4. Crée l'objet module — espace de noms pour les globales du module
  5. Met en cache dans sys.modules
  6. Lie le nom dans l'espace de noms de l'importateur (selon instruction import)

Chemin de recherche des modules (sys.path)

 import sys
sys.path # ['', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload',
# '/home/user/.local/lib/python3.11/site-packages', ...] 
  • '' = répertoire du script courant (ou CWD si interactif)
  • Installer paquets : pip install paquet → site-packages
  • Environnements virtuels isolent site-packages

Paquets et sous-modules

 import paquet.sous_module
from paquet import sous_module
from paquet.sous_module import fonction 

Répertoire avec __init__.py = paquet. __init__.py peut exposer sous-modules :

 # paquet/__init__.py
from .sous_module import fonction_publique
__all__ = ['fonction_publique'] 

Pièges courants et solutions

ProblèmeCauseSolution
ModuleNotFoundErrorNon installé / mauvais env / faute de frappepip install, vérifiez venv, vérifiez orthographe
ImportError: cannot import nameImport circulaire / nom pas dans moduleRestructurez, déplacez imports dans fonctions
Conflit de nomfrom x import * ou fichier local masque stdlibNe nommez pas fichiers math.py, random.py ; utilisez imports explicites
Erreur import relatifExécution module comme scriptLancez comme python -m paquet.module ou utilisez imports absolus

Bonnes pratiques

  1. Bibliothèque standard d'abord, puis tiers, puis local — chaque groupe alphabétisé
  2. Un import par ligne (PEP 8)
  3. Utilisez import module plutôt que from module import *
  4. Alias : Utilisez standards communauté (pd, np, plt, tf, torch)
  5. Évitez manipulation runtime du path — utilisez empaquetage propre (pyproject.toml, pip install -e .)
  6. Vérification types : from __future__ import annotations + gardes TYPE_CHECKING

Exemple : Bloc d'imports propre

 # Bibliothèque standard
import json
import os
from pathlib import Path
from typing import List, Optional
# Tiers
import numpy as np
import pandas as pd
import requests
# Local
from monprojet.config import settings
from monprojet.models import User
from monprojet.utils import logger 

Le système d'import de Python est puissant, explicite et prévisible — une fois que vous comprenez le modèle d'espace de noms. La règle d'or : rendez évident d'où vient chaque nom. Votre futur vous (et vos collègues) vous remercieront.