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
.