Le monde Python évolue vite et avec lui, les outils de gestion d’environnements et de dépendances.
Aujourd’hui, UV s’impose comme une révolution : rapide, moderne et unifié.
C’est le nouvel outil incontournable qui simplifie la vie des développeurs Python tout en respectant les standards d’aujourd’hui.
Dans cet article, nous allons voir :
- Ce qu’est UV
- Comment l’installer sur votre système
- Les principales commandes
- Comment créer un projet Python
- Comment gérer ses dépendances
- Et enfin, comment travailler efficacement en équipe
- Qu’est-ce que UV
UV est un gestionnaire d’installations, d’environnements et de projets Python moderne, développé par Astral — l’équipe derrière le fameux outil Ruff (qui aide pour les vérifications de qualité de code).
En intégrant le plus de fonctionnalités possibles pour le workflow du développeur, UV fournit une alternative à des outils comme Pyenv ou Poetry (ou une combinaison des deux). Écrit en Rust (comme Ruff), il a l’avantage supplémentaire d’être très rapide.
Ses principales promesses :
- L’installation de différentes versions de Python en parallèle,
- L’installation ultra-rapide des dépendances d’un projet,
- Une compatibilité totale avec l’écosystème Python existant.
Découvrons comme l’installer.
- Installer UV
L’installation d’UV est rapide et sans dépendance. On télécharge simplement l’exécutable officiel, ce qui garantit un fonctionnement sur tous les systèmes (Linux, macOS, Windows) sans souci de compatibilité.
Sous Linux ou macOS, utilisez la commande :
curl -LsSf https://astral.sh/uv/install.sh | sh
Sous Windows, exécutez dans PowerShell la commande :
irm https://astral.sh/uv/install.ps1 | iex
Ici, irm est un raccourci pour Invoke-RestMethod, qui permet de télécharger et d’exécuter le script PowerShell d’installation.
En quelques secondes, UV est prêt sur votre machine.
👉 Pour aller plus loin, consultez la documentation officielle : docs.astral.sh/uv/getting-started/installation
- Les principales commandes UV
Une fois le programme UV installé, faisons le tour des principales commandes utiles.
Commençons par la commande « uv python » qui s’occupe de tout ce qui concerne les installations de Python.
Pour lister les versions de Python disponibles :
uv python list
Pour installer la dernière version de Python :
uv python install
On peut installer une version spécifique de Python en passant en argument le numéro de la version, par exemple :
uv python install 3.10
On peut aussi lister les versions déjà installées :
uv python list --installed
Comme on aurait pu le deviner, on supprime une version installée avec la sous-commande « uninstall » :
uv python uninstall 3.10
Vous pouvez créer un environnement virtuel, sous un chemin donné, avec la commande « uv venv » :
uv venv mon_env
En réalité, la plupart du temps, vous serez à l’intérieur d’un dossier donné ou d’un projet et vous pouvez omettre le nom de l’environnement pour laisser UV le créer avec le nom par défaut : .venv. C’est ce que nous recommandons ; une chose de moins à laquelle il faut penser et cela simplifie votre workflow.
Pour cibler une version de Python donnée (ex : 3.10), utiliser l’option --python :
uv venv --python 3.10
UV permet également d’exécuter des scripts, avec la commande uv run. Pour exécuter un script nommé main.py, utilisez :
uv run main.py
Si c’est nécessaire, on peut exécuter le script avec une version spécifique de Python, par exemple :
uv run --python 3.10 main.py
Il y a un certain nombre de commandes (et sous-commandes) et il est difficile d’être exhaustif à ce stade. Des commandes spécifiques interviennent dans le workflow de gestion d’un projet, comme nous allons maintenant le voir.
- Créer un projet Python avec UV
L’une des forces d’UV est sa capacité à créer un projet Python structuré et conforme aux standards actuels.
Vous créez un projet avec la commande « uv init », par exemple :
uv init mon_projet
Cela génère une structure de fichiers initiale contenant entre autres le fichier pyproject.toml. Ce fichier, central au fonctionnement du projet, définit ses informations ou métadonnées : son nom, sa version, sa description, la version de Python requise et ses dépendances. Il remplace les fichiers setup.py et requirements.txt que vous trouvez dans des anciens projets.
Voici ce que l’on trouve typiquement dans le fichier pyproject.toml à la création du projet :
[project]
name = "mon_projet"
version = "0.1.0"
description = "Un projet Python moderne géré avec UV"
readme = "README.md"
requires-python = ">=3.10"
dependencies = []
Pour la suite, il nous faut aussi créer un environnement virtuel (ou « virtualenv » ou « env », pour faire court) dédié au projet. On crée, dans le dossier du projet, un env basé sur la version de Python détectée par UV, avec la commande :
uv venv
Pour rappel, cela crée un dossier .venv/ contenant :
- Une version locale de la bonne version de Python, isolée de celle-ci.
- Les paquets qui vont être installés sur cette version de Python, pour le projet.
Avant d’exécuter du code ou d’installer les dépendances du projet avec cette version locale et isolée de Python, n’oubliez pas de l’activer via la commande habituelle : source .venv/bin/activate ou, sur Windows, .venv\Scripts\activate.
- Gérer les dépendances du projet
La gestion des dépendances c’est souvent une problématique compliquée à traiter. UV rend cette action simple et fluide.
Ajoutez une dépendance avec la commande « uv add ». Par exemple, pour la bibliothèque Requests :
uv add requests
Cette commande :
- met à jour le fichier pyproject.toml,
- installe la dépendance dans l’environnement virtuel,
- et crée ou met à jour un fichier uv.lock (pour verrouiller les versions exactes des dépendances).
À tout moment, vous pouvez lister les dépendances installées grâce à la commande :
uv pip list
Très pratique pour vérifier que tout est en place avant d’exécuter votre projet.
Vous pouvez supprimer une dépendance existante, avec la commande « uv remove ». Par exemple, pour Requests :
uv remove requests
Ainsi, si vous n’avez plus besoin d’une dépendance, cette commande la désinstalle et met à jour les fichiers de métadonnées (pyproject.toml, uv.lock).
- Travailler en équipe avec UV
Travailler à plusieurs sur un même projet Python peut vite devenir un casse-tête.
UV facilite la collaboration et garantit que tous les développeurs travaillent dans les mêmes conditions d’exécution du code.
Lorsqu’un membre de votre équipe clone le projet avec git, il lui suffit d’exécuter uv venv pour créer l’environnement virtuel, de l’activer, puis d’exécuter la commande qui installe / met à jour les dépendances (listées dans le fichier uv.lock) :
uv sync
À tout moment, tout le monde peut travailler avec la même version de Python et les mêmes dépendances. Fini les fameux “chez moi ça marche pas” !
En conclusion, UV est un outil puissant et moderne pour la gestion des installations et des projets Python. Toute équipe exigeante pour sa productivité, et la qualité du travail qu’elle produit, devrait l’intégrer à son outillage (méthodes d’installation, workflows, CI/CD, etc).