Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

🖥️ Diapositives du cours — Séance 02 (ven. 2 oct.)

De quoi avez-vous besoin pour exécuter votre code Python ?

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.

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 :

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 | sh

ou, sur macOS avec Homebrew, brew install pixi. Redémarrez le terminal, puis vérifiez :

  pixi --version

Sur 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 myproject

Ajouter des paquets :

  pixi add python=3.12 numpy pandas matplotlib

Cela 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 lab

Ce 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.py

Il é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
  - pytorch

pixi 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.txt

qui produit des entrées épinglées comme

  matplotlib==3.10.0
  numpy==2.2.1
  pandas==2.2.3

C’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.