environnements python

Comprendre les environnements python (pip, conda, venv, poetry…)

Emmanuel Jakobowicz Mis à jour le : 24 juin 2026 méthode, python 1 Comment

Vous vous êtes lancé dans le développement avec le langage Python et chaque développeur que vous croisez vous parle de nouveaux outils, d'environnements python... Nous allons ici clarifier le rôle de quelques outils que nous utilisons au quotidien.

Parmi ces outils, on trouve uv, pip, conda, poetry, venv, virtualenv, pipenv... Ils sont souvent rassemblés dans la famille des gestionnaires de packages / d'environnements python mais ceci couvre énormément de cas d'usages différents.

Avant de se concentrer sur les outils, un petit rappel de ce dont on a besoin pour coder en Python :

  1.  Une ou plusieurs versions de Python
  2. Des packages et leurs dépendances
  3. Une IDE bien adaptée
  4. Parfois des codes / packages dans d'autres langages (par exemple Cuda pour le deep learning sur GPU)
  5. Des environnements virtuels pour gérer les packages associés à chaque projet

Pour répondre à toutes ces contraintes, il faut vous équiper d'un certain nombre d'outils et chacun ont leurs propres spécificités.


Si vous êtes pressé (TL;DR 2026)

  • Nouveau projet, développement ou data classiqueuv. Un seul outil rapide qui gère versions de Python, environnements, dépendances et packaging.
  • Stack scientifique lourde / GPU / packages hors PyPI (CUDA, GDAL, R…)conda (via conda-forge) ou son équivalent moderne pixi.
  • Projet existant qui tourne bien sous pip/venv ou poetry → pas besoin de tout migrer. Ça reste parfaitement valable.
De quoi a-t-on besoin pour coder en Python ?

Avant de parler outils, rappelons ce qu'un projet Python demande réellement :

  1. Une ou plusieurs versions de Python (un projet en 3.10, un autre en 3.13).
  2. Des packages et leurs dépendances (et la gestion des conflits entre eux).
  3. Des environnements virtuels pour isoler les dépendances projet par projet.
  4. Un fichier de verrouillage (lock file) pour que l'installation soit reproductible à l'identique sur une autre machine.
  5. Parfois des composants non-Python (CUDA pour le deep learning sur GPU, bibliothèques C/C++…).

Aucun outil unique ne couvrait historiquement tout cela : on empilait pyenv + virtualenv + pip + pip-tools… C'est précisément ce que les outils récents cherchent à unifier.

Quelques définitions
  • Package (ou bibliothèque/librairie) : un ensemble de modules, classes et fonctions fournissant des fonctionnalités qui ne sont pas dans Python de base (par ex. pandas).
  • Dépendance : un package dont un autre package a besoin pour fonctionner.
  • Environnement virtuel : un espace isolé propre à un projet, où ses packages et leurs versions n'interfèrent pas avec les autres projets ni avec le Python du système.
  • Lock file : un fichier (uv.lock, poetry.lock, requirements.txt figé…) qui fige les versions exactes de toutes les dépendances, directes et indirectes. C'est la clé de la reproductibilité.
  • pyproject.toml : le fichier de configuration standard d'un projet Python moderne (normalisé par les PEP 518/621). Il déclare le nom du projet, ses dépendances et ses outils. La plupart des outils récents (uv, poetry, pdm…) s'appuient dessus.
Pip, le gestionnaire de package de python

La commande

pip install

est souvent la première que vous apprenez en python, elle permet d'installer un package en local en allant le chercher sur le pypi (https://pypi.org/).

pip ira chercher les dépendances du packages mais ne gérera pas les conflits de dépendances entre packages (par exemple des versions non adaptées aux différents packages installés).

Pip n'a pas de gestionnaire d'environnement.

Documentation du projet PIP : https://pip.pypa.io/en/stable/

pypi

venv / virtualenv - les environnements virtuels de base

venv est un gestionnaire d'environnement virtuel qui est installé nativement dans python. Il permet de gérer des environnements simples, il ne comprend pas de gestionnaire de package.

venv est spécialement adapté pour les environnements simples. Il ne permet pas de travailler avec différentes versions de python ou avec des packages dans d'autres langages.

python -m venv .venv            # crée l'environnement
source .venv/bin/activate       # l'active (macOS/Linux)
.venv\Scripts\activate          # l'active (Windows)

virtualenv est une alternative externe, un peu plus rapide et compatible avec d'anciennes versions de Python. Simple et fiable, mais il ne gère ni les versions de Python ni les conflits de dépendances.

Doc : https://docs.python.org/fr/3/library/venv.html

pyenv - gérer plusieurs versions de Python

Souvent oublié, pyenv sert uniquement à installer et basculer entre plusieurs versions de Python sur une même machine, un besoin réel dès qu'on a plusieurs projets.

pyenv install 3.12.4
pyenv local 3.12.4   # fixe la version de Python pour ce dossier

Bon à savoir : uv (voir plus bas) intègre désormais cette fonction, ce qui rend pyenv souvent superflu pour les nouveaux projets.

conda / mamba, un outil multilangage pour la gestion de package et d'environnement

conda combine un gestionnaire de package et un gestionnaire d'environnements. conda est une solution plébiscité par les développeurs python dans le domaine de la data science car il peut gérer des packages dans d'autres langages que python.

Les deux composantes de conda sont :

  • un gestionnaire de package qui peut aller chercher des packages sur différents dépôts, notamment conda-forge, anaconda... et gérer les dépendances complexes entre packages.
  • un gestionnaire d'environnements permettant de créer des environnements avec des versions de python différentes et des packages dans d'autres langages que python.

conda combine gestionnaire de packages et gestionnaire d'environnements, et sait installer des packages non-Python (binaires C/C++, CUDA, R…). C'est sa grande force pour la data science et le calcul scientifique.

conda create -n monenv python=3.12 numpy pandas jupyterlab
conda activate monenv

Deux précisions importantes :

  • conda ≠ Anaconda. conda est l'outil open source. Anaconda est une distribution (Python + de nombreux packages + un dépôt). L'usage professionnel de la distribution Anaconda et de ses canaux officiels peut exiger une licence payante pour les organisations d'une certaine taille. Le canal communautaire conda-forge, lui, reste libre — c'est celui à privilégier.
  • Depuis fin 2023, conda utilise par défaut le solveur libmamba, bien plus rapide qu'auparavant. mamba reste une réimplémentation autonome de conda, plus rapide, utilisée surtout sur de gros environnements.

Doc : https://docs.conda.io/en/latest/ · mamba : https://mamba.readthedocs.io/

Image

poetry, la gestion de projet « tout-en-un »

Poetry est un outil de gestion de dépendances et de packages pour Python. Il est plébiscité par les développeurs Python pour son approche globale du packaging de projets.

Voici ses principales caractéristiques et fonctionnalités :

  1. Bonne Gestion des Dépendances : Poetry, au lieu de gérer manuellement un requirements.txt, utilise un fichier spécifique pour les dépendances pyproject.toml. Celui-ci est plus structuré et lisible.

  2. Environnements Virtuels Intégrés : Contrairement à d'autres outils, Poetry gère automatiquement les environnements virtuels pour les projets. Il crée et utilise des environnements virtuels spécifiques au projet, isolant ainsi les dépendances de projet des autres projets et de l'environnement global Python.

  3. Résolution de Dépendances Intelligente : Poetry utilise un algorithme de résolution de dépendances sophistiqué pour s'assurer que vous avez un ensemble cohérent de dépendances. Il résout les dépendances de manière à éviter les conflits et à garantir la compatibilité.

En résumé, Poetry est un outil complet pour la gestion de projets Python, offrant une approche unifiée pour la gestion des dépendances, le packaging, et l'isolation de l'environnement.

Documentation Poetry : https://python-poetry.org/

poetry python env

uv, le nouveau standard (2024-2026)

uv, développé par Astral (les créateurs du linter Ruff) et écrit en Rust, est devenu l'outil de référence. Son ambition : un « Cargo pour Python ». Il remplace à lui seul pip, pip-tools, pipx, virtualenv, pyenv, poetry et twine, avec une vitesse 10 à 100× supérieure à pip.

Ce qu'il apporte :

  • installation/résolution ultra-rapides grâce à un cache global ;
  • gestion des versions de Python intégrée (plus besoin de pyenv) ;
  • environnements virtuels automatiques ;
  • lock file universel (uv.lock), multi-plateforme ;
  • une interface compatible pip pour migrer sans rien changer.
# Installation (aucune installation de Python préalable nécessaire)
curl -LsSf https://astral.sh/uv/install.sh | sh        # macOS / Linux
# Windows : powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# Workflow projet
uv init mon-projet && cd mon-projet
uv add pandas scikit-learn        # ajoute des packages + met à jour le lock
uv run python script.py           # exécute dans l'environnement du projet
uv sync                           # recrée l'environnement à l'identique depuis uv.lock

# Gérer les versions de Python
uv python install 3.12 3.13

# Interface compatible pip (pour les projets existants)
uv pip install -r requirements.txt

À noter : Astral est en cours de rachat par OpenAI (annoncé en mars 2026), avec un engagement à conserver uv en open source (licences MIT/Apache-2.0). Doc : https://docs.astral.sh/uv/

pixi : uv pour le monde scientifique

pixi (Prefix.dev) applique la philosophie moderne de uv à l'univers conda : il installe des packages depuis conda-forge et PyPI, gère les environnements et un lock file, le tout sans licence payante. C'est le choix indiqué quand vous avez besoin de packages binaires scientifiques que uv seul ne couvre pas.

pixi init mon-projet && cd mon-projet
pixi add python numpy jupyterlab
pixi run jupyter lab

Doc : https://pixi.sh/

Quel outil utiliser pour quel projet ?

Les outils précédemment décrit ont tous leurs faiblesses et leur forces, l'objectif est ici de vous proposer des combinaisons d'outils vous permettant de faire un choix. Ces choix sont issus de l'expérience que nous avons vécu durant ces dernières années chez stat4decision aussi bien lors de formations que lors de projets.

Vous débutez en Python, votre objectif principal est :

  • Manipuler des données, créer des modèles, packages scientifiques (GPU, géospatial…)conda + conda-forge ou pixi.
  • Apprendre proprement et démarrer sans douleuruv : une seule commande à retenir (uv add), tout est géré pour vous.

La règle simple : par défaut, partez sur uv. Basculez vers l'univers conda/pixi uniquement si vous butez sur des packages non disponibles en wheels sur PyPI.

Tableau comparatif
Outil Installe des packages Gère l'environnement Gère les versions de Python Packages non-Python Lock file Vitesse
pip ❌ (via pip-tools) 🐢
venv / virtualenv
pyenv
conda / mamba ✅ (env export) 🐢/🙂
poetry 🙂
uv ✅ (universel) 🚀
pixi

Migrer un projet existant vers uv

Pas besoin de tout réécrire :

cd mon-projet-existant
uv init                              # crée pyproject.toml et uv.lock
uv pip install -r requirements.txt   # réutilise vos dépendances actuelles

Pour un projet sous poetry, un outil de migration convertit le pyproject.toml. Et comme uv pip … reste compatible pip, vous pouvez adopter uv progressivement.

Et pour pratiquer les environnements python ?

Nous allons ajouter des articles sur les différents outils afin de détailler l'utilisation de chacun.

Ces outils s'apprennent surtout par la pratique. Si vous voulez gagner du temps et adopter directement les bons réflexes (environnements, reproductibilité, packaging), nous formons à Python pour la data au quotidien

Formation Python

Des environnements Python maîtrisés, sur vos vrais projets

uv, conda, venv, packaging, reproductibilité… La théorie, c'est un bon début. Passez à la pratique avec nos formateurs, en petits groupes, à distance ou à Paris.

Certifié Qualiopi — finançable OPCO Petits groupes À distance ou à Paris

Partager cet article

Comments 1

  1. Pingback: Les bonnes pratiques Python : écrire du code robuste, lisible et durable - Stat4decision

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *