Image d'illustration de l'article uv - Un package manager Python rapide et pragmatique

uv - Un package manager Python rapide et pragmatique

Si tu veux un workflow Python simple et reproductible, uv est un candidat sérieux. Il remplace plusieurs briques à la fois :

  • installation de dépendances (pip)
  • gestion d’environnements (venv)
  • lockfile reproductible

L’outil est développé par Astral (Ruff), écrit en Rust, et vise un usage “standard Python” sans trop de magie.

Workflow minimal

1) Créer un projet

uv init

Tu obtiens un pyproject.toml de base.

2) Ajouter une dépendance

uv add fastapi

Mise à jour du pyproject.toml et génération du uv.lock.

3) Lancer un script

uv run python main.py

Pas besoin d’activer le venv à la main : uv gère l’environnement pour toi.

Ce qui compte techniquement

Voici les points techniques qui expliquent le comportement d’uv :

  • Resolver rapide : résolution des contraintes efficace avec un graphe de dépendances propre.
  • Cache de wheels : réutilisation des wheels déjà téléchargées pour éviter les I/O inutiles.
  • Build PEP 517 : usage des standards modernes pour construire les packages.
  • Lockfile reproductible : uv.lock contient versions et hashes, indispensable pour la CI/CD.
  • Exécution isolée : uv run utilise automatiquement le venv lié au projet.

On aime ça les benchmarks, alors voici une comparaison rapide d’installation avec un nouvel env virtuel et un warm cache:

Benchmark d'installation avec Warm cache

Tu peux retrouver plus de benchmarks sur le repo git de uv: Benchmarks

Mais Poetry, c’est pas mieux ?

Poetry est très bon, surtout si tu veux un outil “tout-en-un” : gestion des dépendances, lockfile, publication de packages, scripts, etc. Mais il ajoute aussi une couche d’abstraction et peut être plus lent sur des projets lourds.

En pratique :

  • Poetry si tu publies des packages et veux un workflow complet clé en main.
  • uv si tu veux rester proche du standard Python, avec un resolver rapide et un workflow simple.

Les deux sont solides. La vraie différence, c’est le niveau d’abstraction et ce que tu attends de l’outil.

Migrer un projet existant

uv add -r requirements.txt

uv lit ton requirements, installe les dépendances, et génère un lockfile propre.

En résumé

Résumons uv en 3 points :

  1. Outil complet : remplace pip, venv et les lockfiles classiques.
  2. Performance : resolver rapide, cache intelligent, moins d’I/O.
  3. Pragmatique : pyproject.toml standard, pas de magie, compatible avec l’écosystème Python.

Si tu cherches une alternative à Poetry ou à la stack pip + venv + pip-tools, ça vaut le coup de tester.

Commence par un projet perso pour voir si ça te convient, puis envisage une adoption plus large si c’est concluant. Et si tu as essayé, n’hésite pas à me partager ton avis !