🖥️ Diapositives du cours — Séance 02 (ven. 2 oct.)
De quoi avez-vous besoin pour exécuter votre code Python ?¶
Python. La plupart des bibliothèques exigent aujourd’hui Python 3.10 ou plus récent ; ce livre utilise Python 3.12. Votre ordinateur portable est peut-être livré avec Python préinstallé, mais ne comptez jamais sur le Python du système — utilisez un gestionnaire d’environnements (ci-dessous).
Du code : des fichiers d’extension
.py, ou des carnets.Des dépendances : des modules regroupant des fonctions apparentées (p. ex. numpy, scipy, pandas, scikit-learn), importés dans le code Python par
import numpy as np
Pour exécuter du code Python avec les bonnes dépendances, vous définissez un environnement : une version de Python + des bibliothèques + les versions de ces bibliothèques.
Que sont les environnements virtuels ?¶
Un environnement virtuel est une copie isolée d’un interpréteur Python donné, accompagnée de versions précises de bibliothèques externes.
- Vous pouvez avoir sur la même machine plusieurs projets exigeant des versions différentes des mêmes bibliothèques.
- Vous donnez votre code à un collègue, ou à un assistant IA qui l’exécute sur une autre machine.
- Certaines de vos bibliothèques dépendent d’autres bibliothèques, à des versions précises. Comment garantir que tout le monde a la bonne version de tout ?
La réponse : on n’installe jamais de bibliothèques « globalement ». Chaque projet reçoit son propre environnement, déclaré dans un fichier qui vit dans le dépôt du projet.
Les outils de 2026¶
Plusieurs outils gèrent les environnements. Voici le paysage :
- pixi — celui que ce livre utilise. Un gestionnaire rapide, par projet, qui installe des paquets conda-forge et PyPI et écrit automatiquement un fichier de verrouillage (lockfile).
- uv — un gestionnaire rapide pour les projets purement Python (paquets PyPI seulement). Un bon choix quand vous n’avez besoin d’aucune pile géospatiale ou GPU compilée issue de conda-forge.
- miniforge / mamba — une distribution conda minimale préconfigurée pour le canal communautaire conda-forge, avec
mambacomme solveur rapide. À choisir si vous voulez les flux de travail conda classiques. - conda — le gestionnaire de paquets scientifique historique. Encore partout, et ses concepts (canaux,
environment.yml) restent une culture générale utile.
Nous ne recommandons plus de télécharger Anaconda : la licence de la distribution Anaconda a changé en 2024 et son canal par défaut exige désormais une licence payante pour de nombreux usages institutionnels. miniforge avec conda-forge évite entièrement le problème.
pixi : ce que ce livre utilise¶
pixi gère les environnements par projet. L’environnement est déclaré dans pixi.toml, résolu dans pixi.lock, et installé sous .pixi/ dans le répertoire du projet. Il n’y a pas d’étape « activer le bon environnement » à oublier : pixi run utilise toujours l’environnement propre au projet.
Installez d’abord pixi lui-même (une fois par machine). Sur macOS et Linux :
curl -fsSL https://pixi.sh/install.sh | shou, sur macOS avec Homebrew, brew install pixi. Redémarrez le terminal, puis vérifiez :
pixi --versionSur Windows, travaillez dans WSL2 avec la commande Linux ci-dessus ; voir le pas-à-pas d’installation en 1.9.
Démarrer un projet :
pixi init myproject
cd myprojectAjouter des paquets :
pixi add python=3.12 numpy pandas matplotlibCela modifie pixi.toml :
[workspace]
name = "myproject"
channels = ["conda-forge"]
platforms = ["osx-arm64", "linux-64"]
[dependencies]
python = "3.12.*"
numpy = ">=2"
pandas = ">=2.2"
matplotlib = "*"et écrit pixi.lock, qui enregistre la version exacte et l’empreinte (hash) de chaque paquet (dépendances transitives comprises) pour chaque plateforme listée. Validez (commit) les deux fichiers.
Exécuter dans l’environnement :
pixi run python analysis.py
pixi run jupyter labCe livre lui-même est construit ainsi : pixi install puis pixi run build depuis la racine du dépôt.
Le fichier de verrouillage, c’est la reproductibilité. pixi.toml dit ce que vous avez demandé (« numpy, version 2 au moins ») ; pixi.lock dit ce que vous avez réellement obtenu (numpy 2.5.0, cette compilation, cette empreinte). Quiconque clone votre dépôt et lance pixi install sur la même plateforme obtient l’ensemble identique de paquets — le mois prochain, ou sur une machine cloud. Le fichier de verrouillage épingle les paquets par plateforme : chaque entrée sous platforms dans pixi.toml reçoit sa propre liste résolue, si bien qu’un collaborateur sous un autre OS obtient les mêmes versions de paquets dans les compilations de cet OS, non un environnement identique à l’octet près. Les résultats numériques peuvent encore différer légèrement d’une plateforme et d’un matériel à l’autre ; c’est exactement pourquoi 5.1 définit la reproductibilité comme un accord à une tolérance énoncée près. Les environnements épinglés font la différence entre « ça marche sur ma machine » et une analyse reproductible, et ils fondent les pratiques de travail du chapitre 5.
uv : pour les projets purement Python¶
uv joue le même rôle pour les projets PyPI uniquement, avec le standard pyproject.toml :
uv init myproject
uv add numpy pandas
uv run python analysis.pyIl écrit un uv.lock avec la même logique de reproductibilité. Si votre projet a besoin de paquets conda-forge (GDAL, compilations PyTorch avec CUDA, obspy), préférez pixi.
Culture conda¶
Vous rencontrerez des fichiers environment.yml dans de nombreux dépôts de géosciences ; sachez donc les lire et les utiliser. Avec miniforge installé :
conda env create --file environment.yml
conda env list
conda activate myenv
conda deactivate
conda env remove --yes --name myenv(Avec mamba, remplacez conda par mamba pour des résolutions plus rapides.)
Exemple d’environment.yml¶
name: mlgeo
channels:
- conda-forge
dependencies:
- python=3.12
- jupyter
- matplotlib
- numpy>=2
- pandas>=2.2
- scipy
- scikit-learn
- pytorchpixi sait les importer : pixi init --import environment.yml.
Geler un environnement pip¶
L’idiome plus ancien pour enregistrer les versions exactes dans les flux de travail fondés sur pip :
pip freeze > requirements.txtqui produit des entrées épinglées comme
matplotlib==3.10.0
numpy==2.2.1
pandas==2.2.3C’est un instantané à plat, sans empreintes ni information de plateforme — l’ancêtre affaibli du fichier de verrouillage. Cela fonctionne encore, mais pour un nouveau projet préférez pixi ou uv, qui entretiennent le fichier de verrouillage pour vous.