Les développeurs Python n'ont enfin plus besoin de choisir entre pip, poetry et pipenv. Créé par l'équipe Astral, aussi connue pour Ruff, uv est en train de transformer le paysage de la gestion de paquets Python à une vitesse impressionnante.
C'est quoi uv ?
uv est un outil de gestion de paquets et de projets Python écrit en Rust. Son objectif est unique : offrir une vitesse extrême.
| Fonctionnalité | Description |
|---|---|
| Installation de paquets | Résolution de dépendances compatible pip |
| Gestion de projet | Remplace poetry/pipenv, gère les environnements virtuels et les dépendances |
| Mécanisme de cache | Cache global + liens physiques, installation répétée en quelques secondes |
| Multi-versions Python | Installe et gère automatiquement plusieurs versions de Python |
| Flux de travail zéro config | uv init + uv add et c'est parti |
| Licence | MIT (entièrement open source) |
L'équipe Astral a mis toute son expertise en outillage haute performance Rust dans uv. Le résultat est sans appel : 10 à 100 fois plus rapide que pip.
📦 GitHub : https://github.com/astral-sh/uv ⭐ Stars : 50k+ (mi-2026) 📄 Licence : MIT
Installer uv
L'installation d'uv est d'une simplicité remarquable, une seule ligne suffit :
# Méthode recommandée par l'équipe — script d'installation
curl -LsSf https://astral.sh/uv/install.sh | sh
Vérifiez ensuite que tout fonctionne :
uv --version
# uv 0.7.x
Sous Homebrew (macOS/Linux) :
brew install uv
Ou avec pipx :
pipx install uv
Prise en main rapide : votre premier projet
Initialiser un projet
# Créer un nouveau projet (génère automatiquement pyproject.toml + environnement virtuel)
uv init my-app
cd my-app
Voici la structure de fichiers générée :
my-app/
├── .python-version # Version Python verrouillée
├── pyproject.toml # Configuration du projet
├── README.md
├── main.py
└── uv.lock # Fichier de verrouillage des dépendances
Le contenu de pyproject.toml est d'une propreté exemplaire :
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
Ajouter des dépendances
# Ajouter des dépendances de production (résolution + installation + verrouillage automatiques)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"
# Ajouter des dépendances de développement
uv add --dev pytest ruff mypy
Une seule commande pour tout faire : résolution des dépendances → téléchargement → installation → mise à jour de uv.lock. Le tout prend généralement quelques secondes seulement.
Exécuter du code
# Exécuter un script dans l'environnement virtuel
uv run python main.py
# Exécuter des outils installés
uv run pytest
uv run ruff check .
uv run active automatiquement l'environnement virtuel du projet. Fini le source .venv/bin/activate manuel.
Fonctionnalités avancées
Gestion multi-versions Python
uv intègre un gestionnaire de versions Python qui télécharge et gère automatiquement plusieurs versions :
# Voir les versions Python installées
uv python list
# Installer une version spécifique de Python
uv python install 3.13
uv python install 3.11
# Définir la version Python pour un projet
uv python pin 3.13
# Exécuter avec une version spécifique
uv run --python 3.11 python main.py
Ça résout un problème qui embête les développeurs Python depuis longtemps — pyenv n'est plus nécessaire.
Workspace (espace de travail)
Si votre projet comporte plusieurs paquets, la fonctionnalité workspace d'uv est parfaite :
# Initialiser un workspace
uv init --package packages/core
uv init --package packages/cli
Dans pyproject.toml :
[tool.uv.workspace]
members = ["packages/*"]
Gestion de scripts
uv permet de définir des alias de scripts directement dans pyproject.toml :
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"
Puis les exécuter simplement :
uv run dev
uv run test
Intégration CI/CD
Utilisation d'uv dans GitHub Actions :
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --frozen
- name: Run tests
run: uv run pytest
enable-cache: true met en cache les téléchargements de paquets uv, ce qui accélère considérablement les builds en CI.
Comparaison de vitesse avec pip/poetry
Voici les résultats des benchmarks fournis par Astral (installation de Django et toutes ses dépendances) :
| Outil | Première installation | Installation depuis le cache |
|---|---|---|
| pip | ~15s | ~3s |
| poetry | ~20s | ~5s |
| uv | ~1.5s | ~0.3s |
Les raisons de cette vitesse :
- Implémentation Rust — le moteur de résolution de dépendances est écrit en Rust, plusieurs ordres de grandeur plus rapide que Python
- Cache global — les paquets sont mis en cache globalement et partagés entre projets via des liens physiques
- Téléchargements parallèles — téléchargement simultané de plusieurs paquets, exploitation maximale de la bande passante
- Cache intelligent — les résultats de résolution sont également mis en cache, ce qui évite les recalculs
Migrer depuis pip/poetry
Migrer depuis pip
# Créer un projet à partir d'un requirements.txt existant
uv pip install -r requirements.txt
# Ou importer après avoir créé un nouveau projet
uv init
uv add -r requirements.txt
Migrer depuis poetry
# Synchroniser les dépendances directement depuis pyproject.toml
uv sync
# Si vous avez besoin de reverrouiller
uv lock
uv est entièrement compatible avec le format pyproject.toml. La plupart des projets poetry peuvent basculer directement.
Récapitulatif des commandes utiles
# Gestion de projet
uv init <name> # Créer un nouveau projet
uv add <package> # Ajouter une dépendance
uv remove <package> # Supprimer une dépendance
uv sync # Synchroniser les dépendances (similaire à pip install -e .)
uv lock # Reverrouiller les dépendances
# Exécution
uv run <command> # Exécuter une commande dans l'environnement virtuel
uv tool run <tool> # Exécuter un outil temporaire (similaire à pipx run)
uv tool install <tool> # Installer un outil global
# Gestion Python
uv python install <ver> # Installer une version Python
uv python list # Lister les versions installées
uv python pin <ver> # Verrouiller la version Python du projet
# Cache
uv cache dir # Afficher le répertoire de cache
uv cache clean # Vider le cache
Conclusion
uv est en passe de devenir l'outil standard pour les développeurs Python. Créé par l'équipe Ruff, il est extrêmement rapide, son API est élégante, et il est entièrement open source.
Cas d'utilisation recommandés :
- ✅ Nouveaux projets — lancez-vous directement avec
uv init - ✅ CI/CD — le cache fonctionne parfaitement, les builds sont nettement plus rapides
- ✅ Projets multi-versions Python — gestion de versions intégrée
- ✅ Migration depuis poetry/pipenv — compatibilité pyproject.toml
Si vous utilisez encore pip + venv ou poetry, on vous recommande vivement d'essayer uv. Une fois que vous avez goûté aux installations en quelques secondes, impossible de revenir en arrière.
🔗 Documentation officielle : https://docs.astral.sh/uv/ 🔗 GitHub : https://github.com/astral-sh/uv