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 :
- Une ou plusieurs versions de Python
- Des packages et leurs dépendances
- Une IDE bien adaptée
- Parfois des codes / packages dans d'autres langages (par exemple Cuda pour le deep learning sur GPU)
- 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 classique →
uv. 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 modernepixi. - 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 :
- Une ou plusieurs versions de Python (un projet en 3.10, un autre en 3.13).
- Des packages et leurs dépendances (et la gestion des conflits entre eux).
- Des environnements virtuels pour isoler les dépendances projet par projet.
- Un fichier de verrouillage (lock file) pour que l'installation soit reproductible à l'identique sur une autre machine.
- 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.txtfigé…) 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/
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.
condaest 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.mambareste 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/
poetry, la gestion de projet « tout-en-un »
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 ?
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 douleur → uv : 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.
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 ?
Partager cet article

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