Les environnements python

Définition

Un environnement Python est un contexte d'exécution qui contient un interpréteur Python et un ensemble de dépendances installées. L'idée derrière est d'isoler les projets afin d'éviter les conflits de versions entre bibliothèques.

Exécuter le code Python

Interpréteur global

C'est le Python installé au niveau système (python, python3). C'est très simple, pas besoin de gérer des environnements, mais c'est bien uniquement pour des petits scripts Python en "one shot" et des notebooks simples d'exploration car on peut rapidement avoir des problèmes avec les dépendances sur le long terme. Pour ma part, que ce soit les scripts ou les notebooks, j'utilise à minima un environnement virtuel .venv avec optionnellement un petit requirements.txt minimale, d'autant plus que ce n'est pas difficile de le créer et gérer.

Environnement virtuel .venv

venv est un module natif de Python qui permet de créer des environnements virtuels isolés pour différents projets. C'est un peu comme si on avait un Python installé pour chaque projet.

Chargement…

On peut aussi créer un .venv directement depuis VS Code ou Cursor (c’est ce que je fais le plus souvent) :

  1. Ouvrir le dossier du projet à la racine du repo.
  2. Ctrl+Shift+P (palette de commandes).
  3. Choisir Python: Create Environment (parfois libellé Create Virtual Environment).
  4. Sélectionner Venv puis l’interpréteur Python souhaité.

L’éditeur crée le dossier .venv et propose en général d’activer cet environnement pour le workspace.

Nota bene : Pour les jupyter notebooks, l’environnement seul ne suffit pas. Il faut installer ipykernel (et souvent jupyter) dans le .venv, puis sélectionner ce kernel dans le notebook (coin haut à droite, ou commande Select Kernel).

Chargement…

Environnement Conda / Mamba

Conda/Mamba gèrent à la fois Python et des dépendances non-Python (C/C++, MKL, CUDA, etc.). Très utile par exemple si on souhaite entrainer un modèle de machine learning comme un RandomForest ou XGBoost sur le GPU plutôt que le CPU avec cuML (CUDA) au lieu de scikit-learn.

Chargement…

C'est ce que je recommande pour les projets qu'on souhaite scaler.

Bonus : Micromamba

Sur ma machine Linux, j'utilise Micromamba, une version minimaliste de Mamba, qui est un simple exécutable, pas besoin d'Anaconda. Sur Windows, je reste sur .venv avec pip.

Chargement…

Installer des paquets

Une fois l’environnement activé (ou sélectionné dans l’éditeur), on installe des bibliothèques : numpy, pandas, fastapi, etc.

pip

pip télécharge des paquets depuis un index (souvent PyPI) dans l’environnement courant. C’est l’installateur le plus courant avec venv.

Chargement…

Ce que je fais généralement sur un petit projet : .venv activé → pip install -r requirements.txt.

conda / mamba

Dans un environnement conda, on installe via conda install (binaires conda) ou parfois pip pour ce qui manque sur conda-forge.

Chargement…

Pratique quand on a besoin de libs lourdes (MKL, CUDA, etc.) sans tout compiler à la main.

poetry

Poetry gère dépendances + lock à partir de pyproject.toml.

Chargement…

Utile quand le projet est déjà structuré autour de Poetry (équipe, packaging, releases).

uv

Alternative moderne, très rapide, souvent utilisée comme pip/poetry accéléré.

Chargement…

Les fichiers de dépendances

requirements.txt

Format historique côté pip.

  • simple à lire,
  • très répandu,
  • souvent utilisé avec pip freeze (attention, peut inclure trop de dépendances transitoires).
Chargement…

environment.yml / environment.yaml

Format Conda/Mamba : version Python + paquets conda + paquets pip éventuels.

Chargement…

pyproject.toml

Format moderne standard (PEP 621) : métadonnées de projet, dépendances et configuration d'outils (poetry, hatch, ruff, etc.).

Chargement…

Les fichiers lock

Ils verrouillent les versions exactes pour des installations reproductibles.

Exemples :

  • poetry.lock
  • pdm.lock
  • uv.lock
  • conda-lock.yml

Sans lock file, deux machines peuvent installer des versions différentes.

Exemples concrets

Rédaction en cours

Résumé

Rédaction en cours

Références

Rédaction en cours

https://docs.python.org/3/library/venv.html https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#create-and-use-virtual-environments https://packaging.python.org/en/latest/key_projects/#pip https://docs.python.org/fr/dev/installing/index.html https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html