uv : un gestionnaire de projets Python
Qu’est-ce que uv ?
uv est un outil ultra-rapide pour :
- Installer les dépendances listées dans
pyproject.toml - Créer et gérer un environnement virtuel
- Exécuter des commandes dans cet environnement
Il remplace efficacement des outils comme pip et venv, tout
en restant compatible avec les standards Python modernes comme pyproject.toml.
Installation
Pour installer uv, voir le site officiel :
astral.sh/uv.
Initialiser un nouveau projet Python
uv permet de créer un squelette de projet moderne rapidement, avec :
- Un fichier
pyproject.toml - Un environnement virtuel local (
.venv) - Une structure propre (
src/, etc.)
Le site officiel astral.sh/uv propose un guide complet pour démarrer, mais en gros, la commande
uv init --package monprojet
permet de créer un projet. L'option --package est importante, car elle
indique de mettre en place un projet Python avec un dossier src/ et un fichier
pyproject.toml qui contient un script principal. Sans cette option,
la structure du projet ressemblera plus à un projet classique comme vu à la page sur
les paquets Python.
Gérer les dépendances
Si le projet a besoin de dépendances, uv permet de les installer
facilement. Par
exemple, pour ajouter le paquet numpy :
uv add numpy
Certaines dépendances peuvent être ajoutées en mode développement avec l'option --dev :
uv add --dev pytest
L'option --dev permet de l'installer dans l'environnement virtuel
local, sans l'ajouter aux dépendances principales du projet.
Lancement du projet
Si vous avez utilisé la commande uv init --package monprojet, uv a configuré pour vous
un script de lancement appelé monprojet dans le fichier pyproject.toml.
[project.scripts]
monprojet = "monprojet:main"
Vous pouvez exécuter ce script directement avec :
uv run monprojet
Notez qu'il est possible de lancer d'autres scripts définis dans
pyproject.toml en utilisant la même commande uv run. Pour définir un script,
il suffit de l'ajouter dans la section [project.scripts] du fichier
pyproject.toml. Par exemple :
[project.scripts]
monprojet = "monprojet:main"
script1 = "monprojet.dossierA.fichierB:fonction"
script2 = "monprojet.dossierA:fonction_dans___init__py"
Lancement des tests
La commande uv run permet aussi d'exécuter pytest. Celui-ci doit être
installé au préalable avec :
uv add --dev pytest
Une fois installé, vous pouvez lancer les tests avec :
uv run pytest
Il existe bien d'autres fonctionnalités avancées. Pour en savoir plus, consultez la
documentation officielle de uv.