Streamlit
Un framework Python qui transforme un script en application web interactive en quelques lignes. Idéal pour partager un modèle, un dashboard ou une démo de data sans toucher au HTML/CSS/JS.
À quoi ça sert
Quand tu fais de la data ou de l'IA, tu veux souvent montrer ton travail : un graphique, les prédictions de ton modèle, un explorateur de jeu de données. Faire un site web complet pour ça, c'est lourd. Faire un notebook, c'est pas partageable au grand public.
Streamlit te permet d'écrire un simple script Python qui devient automatiquement une appli web : sliders, boutons, graphiques, formulaires. Pas une ligne de HTML à écrire.
Streamlit transforme un script Python en site web interactif sans front-end à coder.
Un exemple d'usage
Tu as entraîné un modèle de classification d'images. Tu veux que ton prof / ton équipe puisse uploader une image et voir la prédiction, sans rien installer. Avec Streamlit, ça tient en quelques lignes :
import streamlit as st
st.title("Démo de mon modèle")
fichier = st.file_uploader("Choisis une image")
if fichier:
st.image(fichier)
st.success("Prédiction : chat 🐱")
Tu lances streamlit run app.py et hop, une page web s'ouvre dans ton
navigateur avec un titre, un uploader et un retour visuel.
How-to : installer et utiliser Streamlit
-
Créer un environnement et installer Streamlit
Avec UV (recommandé, voir la fiche UV) :
bashuv init demo-streamlit cd demo-streamlit uv add streamlitOu avec pip classique :
bashpython3 -m venv .venv source .venv/bin/activate pip install streamlitVérifie l'installation avec la démo officielle :
bashuv run streamlit hello -
Écrire ta première app
Crée un fichier
app.py:pythonimport streamlit as st import pandas as pd import numpy as np st.set_page_config(page_title="Mon dashboard", page_icon="📊") st.title("📊 Mon premier dashboard") st.write("Bienvenue ! Joue avec les contrôles à gauche.") # Sidebar avec des contrôles st.sidebar.header("Paramètres") n_points = st.sidebar.slider("Nombre de points", 10, 500, 100) couleur = st.sidebar.selectbox("Série", ["A", "B", "C"]) # Données aléatoires df = pd.DataFrame( np.random.randn(n_points, 3), columns=["A", "B", "C"] ) st.subheader(f"Courbe — série {couleur}") st.line_chart(df[couleur]) with st.expander("Voir les données brutes"): st.dataframe(df) -
Lancer l'application
bashuv run streamlit run app.pyTon navigateur s'ouvre sur
http://localhost:8501. À chaque sauvegarde du fichier, Streamlit propose un rechargement automatique.Astuce — auto-reloadDans le menu en haut à droite de l'app, choisis Settings → Run on save pour que la page se recharge automatiquement à chaque modification.
-
Configurer VS Code
- Installe l'extension Python de Microsoft.
- Sélectionne le bon interpréteur (
Python: Select Interpreter→./.venv/bin/python). - Pour lancer Streamlit avec le bouton « play » de VS Code, crée
.vscode/launch.json:
json{ "version": "0.2.0", "configurations": [ { "name": "Streamlit", "type": "python", "request": "launch", "module": "streamlit", "args": ["run", "app.py"] } ] } -
Aller plus loin : cache et état
Streamtlit ré-exécute le script entier à chaque interaction. Pour éviter de recharger un gros fichier ou de relancer un modèle à chaque clic, utilise le cache :
python@st.cache_data def charger_donnees(chemin): return pd.read_csv(chemin) @st.cache_resource def charger_modele(): import joblib return joblib.load("model.pkl")cache_datapour les DataFrames, JSON, etc.cache_resourcepour les objets non-sérialisables (modèles, connexions).
Aide-mémoire des composants
# Texte
st.title(...) st.header(...) st.write(...)
st.markdown(...) st.code(...) st.latex(...)
# Inputs
st.text_input(...) st.number_input(...)
st.slider(...) st.selectbox(...) st.checkbox(...)
st.button(...) st.file_uploader(...)
# Affichage data
st.dataframe(df) st.table(df) st.metric(...)
st.line_chart(df) st.bar_chart(df) st.map(df)
# Layout
st.columns(...) st.tabs(...) st.expander(...)
st.sidebar.xxx(...) # dans la barre latérale
# Feedback
st.success(...) st.error(...) st.warning(...)
st.spinner(...) st.progress(...)
Pour aller plus loin
- Documentation officielle : docs.streamlit.io
- Galerie d'exemples : streamlit.io/gallery
- Déploiement gratuit : Streamlit Community Cloud