6.2 · Problèmes récurrents (playbook)

Niveau 6 · Dans la pratique

6.2Problèmes récurrents (playbook)

Objectif : disposer d'un playbook « symptôme → causes → actions » pour les blocages Python courants.
Temps estimé : 12 min · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Réflexe : un symptôme = des causes probables = une action ciblée — on diagnostique avant de toucher au code.
  • Lire : la traceback se lit par le bas : la dernière ligne nomme, le dessus localise.
  • Isoler : tout écart entre local et CI se traite par venv, requirements figé et versions alignées.

Fil Nabil — le playbook scotché à côté de l'écran

Nabil garde ce playbook à côté de son écran. Verdict après un an : trois lignes l'ont le plus servi — le venv non activé derrière ModuleNotFoundError, le mélange tabulations + espaces, et la CI rouge alors que tout était vert en local. Pour chacune, il a fini par appliquer la séquence (lire la traceback, vérifier la cause, corriger) au lieu de modifier au hasard.

Symptôme observé, causes vérifiées, actions dans l'ordre : le réflexe tient en trois temps.

Diagnostiquer avant de relancer

La plupart des blocages Python sont des grands classiques : chaque symptôme a des causes typiques et une action ciblée. Le tableau ci-dessous regroupe les situations les plus fréquentes, de l'import au déploiement.

SymptômeCauses probablesActions
ModuleNotFoundErrormauvais interpréteur, venv non activé, fichier au mauvais endroitsélectionner le bon interpréteur, activer le venv, vérifier le chemin
IndentationError / TabErrortabulations + espaces mélangéesconvertir en 4 espaces, black pour normaliser
NameErrorfaute de frappe, variable hors portée, import oubliérelire la dernière ligne, vérifier portée et imports
KeyError sur dictclé absente, accès direct.get() avec défaut + valider les données d'entrée
Ça marchait hier (dépendances)global mélangé, versions dérivéesvenv + requirements figés, rebuild pour prouver
Tests rouges après refactorcomportement changé sans le vouloirlire LE test fautif, corriger le code (pas le test), relancer
API injoignable en conteneurhost localhost au lieu de 0.0.0.0CMD avec --host 0.0.0.0, -p pour publier
CI rouge, local vertversions différentes, test manquant, secret absentaligner versions (requirements), reproduire en local, vérifier secrets
Script lent sur gros volumeboucles Python au lieu de vectorisé/générateurprofiler, vectoriser (pandas/NumPy) ou yield
Erreur d'interprétation fréquente : « le playbook remplace le diagnostic ». Non. Le tableau donne des causes probables, pas un verdict : lisez la traceback (dernière ligne + fichier), vérifiez, puis appliquez l'action ciblée.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : Méthode du playbook : 1) Nommer le symptôme observé (ModuleNotFoundError, IndentationError, NameError, KeyError, dépendances, tests rouges, conteneur, CI, lenteur). 2) Retenir les causes probables du tableau sans conclure seul. 3) Appliquer les actions dans l'ordre (venv, 4 espaces, portée, .get, rebuild, test fautif, 0.0.0.0, versions, vectoriser). 4) Lire la traceback par le bas et verrouiller (venv, hints, tests). Leçon : une galère qui revient appelle une méthode, pas des modifications au hasard.

Script prêt à dire — diagnostiquer sans toucher au hasard (30 s)

« Mon symptôme : [ModuleNotFoundError / KeyError / CI rouge / lenteur]. Je lis la traceback par le bas, j'identifie la cause probable du playbook, j'applique l'action ciblée et je vérifie. »

Modèle copier-coller — accès sûr + erreur précise

def taux_ville(ligne: dict) -> float:
    ville = ligne.get("ville", "inconnue")
    if ville == "inconnue":
        raise ValueError("clé 'ville' absente de la ligne")
    return float(ligne.get("taux", 0.0))

TPE / petit budget

Pas de tableau formel : un symptôme, la cause probable du playbook, l'action et le responsable noté.

PME Alger

Intégrer les réalités locales dans le diagnostic : versions installées, postes partagés, pics du lundi connus.

Remote / hybride

Ajouter les logs écrits immédiats aux actions : à distance, un symptôme non consigné ressemble à un système qui marche.

Interculturel

Expliciter les constats par écrit : ce qui semble évident (quel venv, quelle version) ne l'est pas pour tous.

Prudence : Rappel générique : en cas de secret exposé ou de CI rouge liée aux secrets, régénérez la clé, déplacez-la en variable d'environnement hors dépôt et faites valider par le référent désigné ; ce guide ne donne pas d'avis juridique.

Défi 48h — appliquez demain

Repérez 1 symptôme actuel (import, KeyError, CI rouge), appliquez la ligne du playbook (traceback lue + cause vérifiée + action ciblée).

Checklist sortie de section
  • Je sais relier un symptôme à ses causes probables.
  • Je lis la traceback par le bas avant de corriger.
  • Je sais verrouiller avec venv, hints et tests.
Auto-évaluation 1-5 : diagnostic avant modification ?traceback lue attentivement ?
Vérifiez votre compréhension

Le script de Nabil lève KeyError sur un dict de ventes. Quel réflexe applique le playbook ?

💡

Une même galère qui revient sans cesse n'est pas dix incidents : c'est une méthode à corriger (venv, tests, hints).