0% ont trouvé ce document utile (0 vote)
4 vues27 pages

WoodAI Guide Pratique Python

Ce guide pratique présente la construction de l'application WoodAI, une IA destinée aux artisans menuisiers africains, en partant des concepts théoriques de Python jusqu'à la réalisation d'un projet concret. Il couvre des étapes clés telles que la préparation de l'environnement de travail, l'architecture du projet, et le développement de modules pour optimiser la découpe et valoriser les chutes de bois. Destiné aux étudiants, ce document vise à ancrer les connaissances en Python à travers des applications réelles.

Transféré par

ggomikes1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues27 pages

WoodAI Guide Pratique Python

Ce guide pratique présente la construction de l'application WoodAI, une IA destinée aux artisans menuisiers africains, en partant des concepts théoriques de Python jusqu'à la réalisation d'un projet concret. Il couvre des étapes clés telles que la préparation de l'environnement de travail, l'architecture du projet, et le développement de modules pour optimiser la découpe et valoriser les chutes de bois. Destiné aux étudiants, ce document vise à ancrer les connaissances en Python à travers des applications réelles.

Transféré par

ggomikes1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

■ WoodAI

Du Python Théorique au Projet Réel


Guide pratique complet — Construire une application IA de A à Z

Auteur : Babatoundé David IDOHOU


Institution : Université d'Abomey-Calavi, Bénin
Niveau : Licence 3 — Mathématiques, Informatique et Applications
Projet : WoodAI — IA pour artisans menuisiers africains
Version : 1.0 — 2026

■ Ce guide documente chaque étape de la construction réelle du projet WoodAI. Il est


conçu pour tout étudiant qui connaît Python théoriquement mais n'a jamais appliqué ses
connaissances sur un vrai projet. Chaque notion est expliquée dans le contexte de son
utilisation concrète.
Table des Matières

Chapitre 1 Philosophie du projet — Passer de la théorie à la pratique 4

Chapitre 2 Préparer son environnement de travail 6

Chapitre 3 Architecture d'un projet Python professionnel 9

Chapitre 4 Module 1 — L'optimiseur de découpe (Algorithmique) 12

Chapitre 5 Module 2 — Le valorisateur de chutes (Données) 17

Chapitre 6 L'interface utilisateur avec Streamlit 22

Chapitre 7 Les tests — Pourquoi et comment tester son code 27

Chapitre 8 Sécurité et qualité du code 31

Chapitre 9 Déployer son application en ligne 35

Chapitre 10 Méthode — Comment aborder tout nouveau projet 39

Annexe A Commandes essentielles Windows/PowerShell 43

Annexe B Erreurs fréquentes et solutions 45

Annexe C Ressources pour aller plus loin 47


Chapitre 1 — Philosophie du Projet : De la Théorie à la Pratique

1.1 Le problème de l'enseignement théorique


Dans la plupart des universités africaines, Python s'enseigne comme une liste de notions :
les variables, les boucles, les fonctions, les classes... Les étudiants apprennent la syntaxe,
passent les examens, mais n'ont jamais construit quelque chose de réel. Résultat : à la fin
de la licence, on sait ce qu'est une fonction mais on ne sait pas comment organiser 5
fonctions pour qu'elles travaillent ensemble.

Ce guide part du principe inverse : on commence par le projet réel, et on explique les
notions au moment où elles apparaissent. C'est la méthode la plus efficace pour ancrer les
connaissances.

1.2 Ce qu'on a construit — WoodAI


WoodAI est une application d'intelligence artificielle conçue pour les artisans menuisiers
africains. Elle résout deux problèmes concrets observés dans l'atelier de Clément
IDOHOU, maître menuisier depuis 34 ans au Bénin :

Le gaspillage de bois par découpe non optimisée. Un menuisier coupe intuitivement et


Problème 1 perd souvent 30 à 40% de sa matière première.

Les chutes non valorisées. Les morceaux restants après découpe sont brûlés ou jetés,
Problème 2 alors qu'ils pourraient devenir des objets vendables.

1.3 Les notions Python mobilisées


Voici un tableau de toutes les notions Python utilisées dans ce projet, avec le chapitre où
elles sont expliquées :

Notion Utilisée pour Chapitre

Fonctions Organiser la logique de calcul 4

Dictionnaires Stocker les résultats structurés 4

Listes et tuples Stocker les pièces et chutes 4

pandas (DataFrame) Lire et manipuler les données CSV 5

Modules et imports Organiser le code en fichiers séparés 3


Environnements virtuels Isoler les dépendances du projet 2

Streamlit Créer l'interface utilisateur 6

pytest Tester automatiquement le code 7

Gestion des chemins


Accéder aux fichiers de façon portable 5
(os)
Chapitre 2 — Préparer son Environnement de Travail

2.1 Pourquoi préparer un environnement ?


Un projet Python professionnel ne se lance jamais directement avec Python global installé
sur l'ordinateur. On crée toujours un environnement virtuel — une sorte de bulle isolée où
les bibliothèques installées n'interfèrent pas avec d'autres projets.

■ Analogie : Imagine que tu cuisines deux plats différents. Le premier nécessite du sel, le
second ne doit absolument pas en avoir. Si tu cuisines dans la même casserole sans la
laver, tu contamines le second plat. L'environnement virtuel, c'est avoir deux casseroles
séparées.

2.2 Les outils nécessaires


• Python 3.10+ — Le langage de programmation ([Link]
• VS Code — L'éditeur de code recommandé ([Link]
• pip — Le gestionnaire de bibliothèques Python (Inclus avec Python)
• Git — La gestion de versions (optionnel mais conseillé) ([Link]

2.3 Créer l'environnement virtuel — Pas à pas


Ouvrir le terminal VS Code
Étape 1 Raccourci : Ctrl + ` (la touche en haut à gauche du clavier)

Créer le dossier projet


Étape 2 mkdir woodai cd woodai

Créer l'environnement virtuel


Étape 3 python -m venv venv

Activer l'environnement (Windows)


Étape 4 venv\Scripts\activate

Vérifier l'activation
Étape 5 Tu dois voir (venv) au début de la ligne du terminal

Installer les bibliothèques


Étape 6 pip install streamlit pandas ortools pytest
Vérifier l'installation
Étape 7 python -c "import streamlit; print('OK')"

2.4 Erreur fréquente — Le module venv ne charge pas


Sur Windows, PowerShell bloque par défaut l'exécution de scripts. Si vous voyez l'erreur
'Le module venv n'a pas pu être chargé', exécutez cette commande une seule fois :

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Tapez O puis Entrée pour confirmer. Ce paramètre est permanent — vous n'aurez pas à le
refaire sur cet ordinateur.
Chapitre 3 — Architecture d'un Projet Python Professionnel

3.1 Pourquoi organiser son code ?


Un débutant met tout son code dans un seul fichier. Ça fonctionne pour 50 lignes. Pour un
vrai projet, c'est catastrophique : impossible à lire, impossible à tester, impossible à
maintenir. Un projet professionnel sépare le code en modules selon leur rôle.

3.2 La structure de WoodAI expliquée

woodai/
■■■ [Link] ← Point d'entrée, interface utilisateur
■■■ lancer_woodai.bat ← Lanceur double-clic Windows
■■■ venv/ ← Environnement virtuel (ne pas toucher)
■■■ modules/
■ ■■■ __init__.py ← Déclare 'modules' comme package Python
■ ■■■ [Link] ← Module 1 : calcul d'optimisation
■ ■■■ [Link] ← Module 2 : suggestions d'objets
■■■ data/
■ ■■■ [Link] ← Base de données des objets réalisables
■■■ tests/
■■■ __init__.py ← Déclare 'tests' comme package Python
■■■ test_optimiseur.py ← Tests du module 1
■■■ test_valorisateur.py← Tests du module 2

3.3 Le rôle de __init__.py


Le fichier __init__.py est souvent incompris des débutants. C'est un fichier vide dont le seul
rôle est de dire à Python : 'ce dossier est un package, tu peux importer des modules
depuis lui.' Sans ce fichier, Python ne pourra pas trouver vos modules quand vous écrirez
'from [Link] import ...'.

■■ Erreur classique : ModuleNotFoundError: No module named 'modules' Cause : Le


fichier modules/__init__.py est absent ou le terminal n'est pas dans le bon dossier.
Solution : Vérifier que __init__.py existe et utiliser 'python -m pytest' plutôt que 'python
tests/[Link]' directement.

3.4 Créer la structure sur Windows (PowerShell)


Sur PowerShell Windows, certaines commandes Unix classiques ne fonctionnent pas de la
même façon. Voici les commandes correctes :

# Créer les dossiers (un par un sur PowerShell)


mkdir data
mkdir modules
mkdir tests

# Créer les fichiers vides


New-Item [Link] -ItemType File
New-Item modules\[Link] -ItemType File
New-Item modules\[Link] -ItemType File
New-Item data\[Link] -ItemType File
New-Item tests\test_optimiseur.py -ItemType File
New-Item modules\__init__.py -ItemType File
New-Item tests\__init__.py -ItemType File

■ Différence Unix/Windows : Sur Linux/Mac, 'mkdir a b c' crée 3 dossiers en une


commande. Sur PowerShell Windows, il faut les créer un par un. Si vous voyez 'Impossible
de trouver un paramètre positionnel', c'est cette raison.
Chapitre 4 — Module 1 : L'Optimiseur de Découpe

4.1 Le problème mathématique


L'optimisation de découpe est un problème classique en recherche opérationnelle appelé
'Cutting Stock Problem' (Problème de découpe). L'objectif est de découper des pièces
dans une matière première (une planche) en minimisant les pertes.

Dans notre version simplifiée, on calcule :

• La surface totale de la planche disponible


• La surface cumulée de toutes les pièces à découper
• La surface de chute = surface totale - surface utilisée
• Le pourcentage d'utilisation = (surface utilisée / surface totale) × 100
• Les pièces qui ne rentrent pas dans la planche (dimensions dépassées)

4.2 Le code complet expliqué ligne par ligne


def optimiser_decoupe(longueur_planche, largeur_planche, pieces):
# Calcul de la surface totale disponible
surface_totale = longueur_planche * largeur_planche
surface_utilisee = 0
plan = [] # Liste des pièces qui rentrent
chutes = [] # Liste des pièces qui ne rentrent pas

for piece in pieces:


long_piece, larg_piece, nom = piece # Décompactage du tuple

# Vérification dimensionnelle
if long_piece <= longueur_planche and larg_piece <= largeur_planch
e:
surface_piece = long_piece * larg_piece
surface_utilisee += surface_piece
[Link]({
"nom": nom,
"longueur": long_piece,
"largeur": larg_piece,
"surface": surface_piece
})
else:
[Link]({
"nom": nom,
"statut": "Ne rentre pas dans la planche"
})

# Calculs finaux
surface_chute = surface_totale - surface_utilisee
pourcentage_utilise = round((surface_utilisee / surface_totale) * 100,
2)
pourcentage_chute = round(100 - pourcentage_utilise, 2)

return {
"planche": {"longueur": longueur_planche, "largeur": largeur_planc
he,
"surface_totale": surface_totale},
"plan": plan,
"surface_utilisee": surface_utilisee,
"surface_chute": surface_chute,
"pourcentage_utilise": pourcentage_utilise,
"pourcentage_chute": pourcentage_chute,
"chutes": chutes
}

4.3 Notions Python utilisées ici


Notion Syntaxe Explication

def nom_fonction(param1, Regroupe une logique réutilisable en lui donnant


Définition de fonction
param2): un nom

Décompactage de
long, larg, nom = piece Extraire les valeurs d'un tuple en une seule ligne
tuple

Initialiser une liste avant de la remplir avec


Liste vide plan = []
.append()

{"nom": "Plateau", Stocker des données structurées avec des clés


Dictionnaire
"surface": 4000} nommées

surface_utilisee +=
Opérateur += Ajouter une valeur à une variable existante
surface_piece

Fonction round() round(33.333, 2) Arrondir un nombre à N décimales

Return dict return {...} Retourner un dictionnaire avec tous les résultats
Chapitre 5 — Module 2 : Le Valorisateur de Chutes

5.1 Le concept — Données terrain


Ce module est le cœur de l'intelligence de WoodAI. Il utilise une base de données d'objets
réalisables — construite à partir de l'expertise réelle de Clément IDOHOU — pour
suggérer quoi fabriquer avec les chutes disponibles. C'est un système de recommandation
basé sur les contraintes dimensionnelles.

5.2 La base de données CSV


Le fichier data/[Link] contient la liste des objets réalisables avec leurs dimensions
minimales requises et leur prix de vente estimé :

nom,longueur_min,largeur_min,description,prix_vente_fcfa
Cadre photo petit,20,15,Cadre photo pour petites photos,1500
Cadre photo grand,30,20,Cadre photo pour grandes photos,2500
Tabouret enfant,25,25,Petit tabouret pour enfant,3000
Étagère murale,40,15,Petite étagère murale,4000
Boîte décorative,15,10,Boîte en bois décorative,2000
Porte-stylos,10,10,Porte-stylos en bois pour bureau,1000
Planche à découper,30,20,Planche à découper cuisine,2500
Dessous de plat,15,15,Dessous de plat en bois,1200
Support téléphone,10,8,Support téléphone en bois,1500
Miroir cadre petit,25,20,Cadre pour petit miroir,3000

5.3 Pourquoi utiliser un CSV ?


Un fichier CSV (Comma-Separated Values) est la façon la plus simple de stocker des
données tabulaires. Les avantages pour WoodAI :

• Clément IDOHOU peut l'enrichir lui-même sans programmer


• Modifiable avec Excel, Google Sheets, ou n'importe quel éditeur de texte
• Lu facilement par Python avec la bibliothèque pandas
• Extensible : ajouter 100 nouveaux objets prend 5 minutes

5.4 Le code du valorisateur expliqué


import pandas as pd
import os

def charger_objets():
# [Link] crée le bon chemin selon l'OS (Windows ou Linux)
chemin = [Link]("data", "[Link]")
return pd.read_csv(chemin)

def valoriser_chutes(chutes_dimensions):
objets = charger_objets() # Chargement du CSV comme DataFrame
resultats = []

for longueur, largeur in chutes_dimensions:


suggestions = []

# Itération sur chaque ligne du DataFrame


for _, objet in [Link]():
# Vérification : la chute est-elle assez grande ?
if (longueur >= objet["longueur_min"] and
largeur >= objet["largeur_min"]):
[Link]({
"objet": objet["nom"],
"description": objet["description"],
"prix_vente": objet["prix_vente_fcfa"]
})

[Link]({
"chute": f"{longueur}cm x {largeur}cm",
"suggestions": suggestions,
"nb_suggestions": len(suggestions),
"revenu_potentiel": sum(s["prix_vente"] for s in suggestions)
})

return resultats

5.5 La notion pandas expliquée


pandas est la bibliothèque Python standard pour manipuler des données tabulaires. Elle
charge un CSV en DataFrame — un objet qui ressemble à un tableau Excel mais qu'on
peut manipuler avec du code.

• pd.read_csv() — Lire un fichier CSV et le transformer en DataFrame


• [Link]() — Parcourir chaque ligne d'un DataFrame
• objet['colonne'] — Accéder à la valeur d'une colonne pour une ligne donnée
• sum(... for s in liste) — Expression génératrice : somme calculée à la volée
• f-string — f"{longueur}cm x {largeur}cm" : insérer des variables dans une chaîne
Chapitre 6 — L'Interface Utilisateur avec Streamlit

6.1 Qu'est-ce que Streamlit ?


Streamlit est une bibliothèque Python qui permet de créer des applications web
interactives sans connaître HTML, CSS ou JavaScript. On écrit du Python pur, et Streamlit
génère automatiquement une interface moderne et responsive (compatible smartphone).

■ Comparaison : Avant Streamlit, créer une interface web pour un algorithme Python
nécessitait Flask/Django (backend) + HTML/CSS/JavaScript (frontend) = plusieurs
semaines de travail. Avec Streamlit : quelques heures.

6.2 Les composants Streamlit utilisés


Composant Usage

[Link]() Titre principal de la page

[Link]() Titre de section

[Link]() Sous-titre

st.number_input() Champ de saisie numérique avec min/max/valeur par défaut

st.text_input() Champ de saisie texte

[Link]() Bouton cliquable

[Link]() Diviser la page en colonnes côte à côte

[Link]() Afficher une métrique avec valeur et étiquette

[Link]() Message en vert (succès)

[Link]() Message en rouge (erreur)

[Link]() Message en orange (avertissement)

[Link]() Message en bleu (information)

[Link]() Ligne de séparation horizontale

st.set_page_config() Configurer titre, icône et layout de la page

6.3 Lancer l'application


streamlit run [Link]

Cette commande lance un serveur local et ouvre automatiquement l'application dans le


navigateur à l'adresse [Link] Sur le réseau local, n'importe quel smartphone
connecté au même WiFi peut y accéder en tapant [Link]

6.4 Le lanceur double-clic (fichier .bat)


Pour éviter d'ouvrir VS Code à chaque fois, on crée un fichier .bat (batch script Windows)
qui automatise les étapes :

@echo off
cd /d "%~dp0"
call venv\Scripts\activate
streamlit run [Link]
pause

• @echo off → Ne pas afficher les commandes dans le terminal


• cd /d "%~dp0" → Se déplacer dans le dossier où se trouve le fichier .bat
• call venv\Scripts\activate → Activer l'environnement virtuel
• streamlit run [Link] → Lancer l'application
• pause → Garder le terminal ouvert pour voir les erreurs éventuelles
Chapitre 7 — Les Tests : Pourquoi et Comment Tester son
Code

7.1 Pourquoi tester ?


Un code non testé est un code dont on ne sait pas s'il fonctionne vraiment. Dans WoodAI,
si l'optimiseur calcule mal une surface, un artisan va gaspiller du bois en croyant suivre
nos recommandations. Les tests automatiques détectent ces erreurs avant qu'elles
arrivent en production.

■ Règle professionnelle : On dit qu'un code est 'en production' quand de vrais utilisateurs
l'utilisent. Corriger un bug en production est 10 fois plus coûteux qu'un bug détecté
pendant le développement. D'où l'importance des tests.

7.2 pytest — La bibliothèque de tests Python


pytest est le standard industriel pour tester du code Python. Une fonction de test respecte
ces règles :

• Son nom commence par test_


• Elle se trouve dans un fichier dont le nom commence par test_
• Elle utilise assert pour vérifier qu'une valeur est correcte
• Si assert est faux, le test échoue (FAILED). Si tout est vrai, il réussit (PASSED)

7.3 Test du Module 1 — Optimiseur


# tests/test_optimiseur.py
from [Link] import optimiser_decoupe

def test_decoupe_simple():
# Données d'entrée
pieces = [
(100, 50, "Plateau table"),
(60, 30, "Tiroir")
]
# Appel de la fonction
resultat = optimiser_decoupe(200, 100, pieces)

# Vérifications (assertions)
assert resultat["surface_utilisee"] == 6800 # 100*50 + 60*30
assert resultat["pourcentage_utilise"] == 34.0 # 6800/20000 * 100
print("Test réussi !")

test_decoupe_simple()

7.4 Test du Module 2 — Valorisateur

# tests/test_valorisateur.py
from [Link] import valoriser_chutes

def test_valorisation():
chutes = [(40, 25), (15, 10)]
resultats = valoriser_chutes(chutes)

# La grande chute doit avoir plus de suggestions que la petite


assert resultats[0]['nb_suggestions'] > resultats[1]['nb_suggestions']

# Vérifier que chaque suggestion a un prix positif


for suggestion in resultats[0]['suggestions']:
assert suggestion['prix_vente'] > 0

print(f"Chute 1 : {resultats[0]['nb_suggestions']} objets suggérés")


print(f"Chute 2 : {resultats[1]['nb_suggestions']} objets suggérés")

7.5 Lancer tous les tests


# Lancer tous les tests du projet
python -m pytest tests/ -v

# Avec affichage des print()


python -m pytest tests/ -v -s

# Un seul fichier de test


python -m pytest tests/test_optimiseur.py -v

L'option -v (verbose) affiche le détail de chaque test. L'option -s affiche les messages
print() à l'intérieur des tests. On utilise toujours 'python -m pytest' (avec le flag -m) pour que
Python trouve correctement les modules du projet.
Chapitre 8 — Sécurité et Qualité du Code

8.1 Valider les entrées utilisateur


Toute valeur saisie par un utilisateur peut être incorrecte, malveillante ou incohérente. On
doit toujours valider les entrées avant de les traiter.

def optimiser_decoupe_securise(longueur_planche, largeur_planche, pieces):


# Validation des dimensions de la planche
if longueur_planche <= 0 or largeur_planche <= 0:
raise ValueError("Les dimensions de la planche doivent être positi
ves")

if longueur_planche > 600 or largeur_planche > 300:


raise ValueError("Dimensions hors limites (max : 600cm x 300cm)")

if not pieces:
raise ValueError("La liste des pièces ne peut pas être vide")

if len(pieces) > 50:


raise ValueError("Maximum 50 pièces par planche")

# Si toutes les validations passent, on appelle la fonction normale


return optimiser_decoupe(longueur_planche, largeur_planche, pieces)

8.2 Gérer les erreurs avec try/except


def charger_objets_securise():
try:
chemin = [Link]("data", "[Link]")
df = pd.read_csv(chemin)

# Vérifier que les colonnes nécessaires existent


colonnes_requises = ['nom', 'longueur_min', 'largeur_min', 'prix_v
ente_fcfa']
for col in colonnes_requises:
if col not in [Link]:
raise ValueError(f"Colonne manquante dans [Link] : {co
l}")

return df

except FileNotFoundError:
print("ERREUR : Le fichier data/[Link] est introuvable")
return [Link]() # Retourne un DataFrame vide

except Exception as e:
print(f"ERREUR inattendue : {e}")
return [Link]()

8.3 Bonnes pratiques de qualité


• Nommer clairement : surface_utilisee au lieu de s, longueur_planche au lieu de l
• Documenter les fonctions : Ajouter un docstring : """Description de ce que fait la
fonction"""
• Constantes en majuscules : PRIX_MAX_FCFA = 50000 au lieu de 50000 partout
dans le code
• Une fonction = une responsabilité : Ne pas mélanger le calcul et l'affichage dans la
même fonction
• Pas de magic numbers : Nommer les valeurs : MAX_LONGUEUR = 600 plutôt que
if longueur > 600
• Commits réguliers : Sauvegarder son travail avec Git à chaque étape importante
Chapitre 9 — Déployer son Application en Ligne

9.1 Streamlit Cloud — Gratuit et simple


Streamlit propose un service d'hébergement gratuit appelé Streamlit Community Cloud. En
quelques clics, votre application locale devient accessible à n'importe qui dans le monde
via une URL publique.

Créer un compte GitHub


1 [Link] — Gratuit

Créer un dépôt GitHub


2 Uploader tous les fichiers du projet woodai/

Créer [Link]
3 Lister les bibliothèques : streamlit, pandas, ortools

Aller sur [Link]


4 Se connecter avec son compte GitHub

Cliquer 'New app'


5 Sélectionner le dépôt GitHub et le fichier [Link]

Déployer
6 L'URL publique est générée automatiquement

9.2 Le fichier [Link]


Ce fichier liste toutes les bibliothèques nécessaires pour que votre application fonctionne
sur un autre ordinateur ou serveur :

streamlit>=1.28.0
pandas>=2.0.0
ortools>=9.7.0

■ Pour générer automatiquement [Link] depuis votre environnement virtuel : pip


freeze > [Link] Cette commande liste toutes les bibliothèques installées avec
leurs versions exactes.
Chapitre 10 — Méthode : Comment Aborder Tout Nouveau
Projet

10.1 La méthode en 7 étapes

Définir le problème réel


Avant de coder, répondre à : Quel problème concret résout-on ? Pour qui ? Avec quelles données
■ ? WoodAI a commencé par 34 ans d'observation dans un atelier de menuiserie.

Préparer l'environnement
Créer le dossier projet, l'environnement virtuel, installer les bibliothèques. Ne jamais coder sans
■ environnement virtuel sur un projet sérieux.

Définir l'architecture

■ Décider de la structure des fichiers avant d'écrire une seule ligne de code. Qui fait quoi ? Quel
■ fichier contient quelle logique ?

Coder module par module

■ Un module = une responsabilité. On code, on teste, on valide avant de passer au module suivant.
■ Ne jamais tout coder d'un coup sans tester.

Tester chaque module


Écrire un test dès qu'un module est terminé. Un test non écrit est un bug qui attend d'être trouvé en
■ production.

Construire l'interface

■ L'interface vient en dernier. La logique métier doit fonctionner parfaitement avant d'y ajouter une
■ interface. Streamlit permet de le faire rapidement.

Déployer et itérer
Mettre en ligne une version minimale fonctionnelle, recueillir les retours des utilisateurs réels,
■ améliorer en continu.

10.2 Les questions à se poser avant chaque projet


1. Quel problème réel est-ce que je résous ? (Pas une idée abstraite — un vrai
problème observé)
2. Qui va utiliser cet outil ? (Définir son utilisateur cible)
3. De quelles données ai-je besoin ? (Et comment les obtenir ?)
4. Quelles bibliothèques Python vont m'aider ? (Ne pas réinventer la roue)
5. Comment je vais tester que ça marche ? (Définir les critères de succès avant de
coder)
6. Comment l'utilisateur va interagir avec le résultat ? (Interface, fichier, API ?)
7. Quelle est la version minimale qui apporte déjà de la valeur ? (MVP — Minimum
Viable Product)
Annexe A — Commandes Essentielles Windows/PowerShell

Commande Description

mkdir nom_dossier Créer un dossier

cd nom_dossier Se déplacer dans un dossier

cd .. Remonter d'un niveau

dir Lister les fichiers du dossier courant

New-Item [Link] -ItemType File Créer un fichier vide

python --version Vérifier la version Python installée

python -m venv venv Créer un environnement virtuel

venv\Scripts\activate Activer l'environnement virtuel

deactivate Désactiver l'environnement virtuel

pip install bibliothèque Installer une bibliothèque

pip list Lister les bibliothèques installées

pip freeze > [Link] Exporter les bibliothèques dans un fichier

streamlit run [Link] Lancer une application Streamlit

python -m pytest tests/ -v Lancer tous les tests

Ctrl + C Arrêter un programme en cours d'exécution

Ctrl + ` Ouvrir/fermer le terminal dans VS Code


Annexe B — Erreurs Fréquentes et Solutions

■ Erreur ModuleNotFoundError: No module named 'modules'

■ Cause Python ne trouve pas le package modules/

Vérifier que modules/__init__.py existe. Utiliser 'python -m pytest' au lieu de 'python


■ Solution tests/[Link]'

■ Erreur Le module venv n'a pas pu être chargé

■ Cause PowerShell bloque l'exécution de scripts

■ Solution Exécuter : Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

■ Erreur FileNotFoundError: data/[Link]

■ Cause Le fichier CSV est introuvable

■ Solution Vérifier que le terminal est dans le dossier woodai/ et que le fichier existe dans data/

■ Erreur SyntaxError: unterminated string literal

■ Cause Les guillemets se sont mal copiés depuis un PDF ou site web

■ Solution Retaper manuellement les guillemets dans le code plutôt que de coller

■ Erreur streamlit: command not found

■ Cause Streamlit n'est pas installé ou l'env virtuel n'est pas activé

■ Solution Activer l'env virtuel puis : pip install streamlit

■ Erreur mkdir: Impossible de trouver un paramètre

■ Cause PowerShell ne supporte pas mkdir avec plusieurs arguments

■ Solution Créer les dossiers un par un : mkdir data, mkdir modules, mkdir tests
Annexe C — Ressources pour Aller Plus Loin

Documentation officielle
• Python — [Link]
• Streamlit — [Link]
• pandas — [Link]
• pytest — [Link]
• OR-Tools — [Link]

Hébergement gratuit
• Streamlit Community Cloud — [Link]
• GitHub (code source) — [Link]
• Railway (alternative) — [Link]

Apprendre Python appliqué


• Real Python — [Link]
• [Link] tutoriels FR — [Link]
• Kaggle (données + projets) — [Link]

Ce guide a été construit en une nuit, d'une idée à une application fonctionnelle. La
théorie sans pratique ne vaut rien. La pratique sans théorie est aveugle. WoodAI est
la preuve que les deux ensemble, ça change tout. — Babatoundé David IDOHOU,
Cotonou, Bénin, 2026

Vous aimerez peut-être aussi