Technique Démarrer vos projets Python avec uv

Emmanuel Chomarat Photo de Emmanuel Chomarat

Emmanuel Chomarat

Démarrer vos projets Python avec uv

Dans cet article, nous explorerons comment utiliser l'outil uv pour remplacer plusieurs outils de gestion de projet tels que pipx, pip, env, poetry, etc. uv permet de gérer toutes les dimensions d'un projet de manière rapide et efficace.

Installation

Selon votre environnement vous devrez installer uv, un binaire écrit en Rust ce qui lui confére une très grande performance. Je détaille ici brièvement son installation mais vous pouvez consulter la documentation officielle pour d'autres méthodes.

Windows

Sous Windows, ouvrez un terminal powershell et éxectuer la commande suivante:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Ou, ce que je recommande, utilisez le gestionnaire de paquets winget qui simplifie également la mise à jour ou la désinstallation du paquet.

winget install --id=astral-sh.uv  -e

Linux / WSL / MacOS

Pour Linux/Macos/WSL, ouvrez un terminal et éxecuter les commandes suivantes :

curl -LsSf https://astral.sh/uv/install.sh | sh

ou si vous utilisez l'outils brew (fortement recommandé sous MacOS)

brew install uv

Pour plus de méthodes d'installation consultez la documentation d'installation

Gestion de projet

Passons maintenant à la création et à la gestion d’un projet avec uv. Cet article vous présente les étapes essentielles pour démarrer rapidement. Des articles ultérieurs aborderont des fonctionnalités avancées et les évolutions récentes de l'outil.

Créer un nouveau projet / Comment intégrer dans un projet existant

Pour créer un nouveau projet c'est très simple. Rendez vous dans le répertoire de votre choix et éxzecuter les commandes suivantes dans la console :

uv init projetX
cd projetX

Si le répertoire projetX existe déjà et contient du code vous pouvez directement taper ces commandes:

cd projetX
uv init

En effet la commande uv init initialisera par défaut dans le répertoire courant la structure du projet. Nous explorerons d'autres paramètres de cette commande dans de futurs articles.

Dans les deux cas le répertoire contiendra l'arborescence suivante :

.
├── .gitignore
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── ... autres fichiers si le répertoire n'était pas vide

Une fois le projet créé vous pouvez alors exécuter votre application (ici main.py) via la commande uv run.

uv run main.py
Hello from projetX

Cette commande uv run va effectuer plusieurs choses.

  1. Création d'un environment virtuel (venv) pour votre projet (dans le répertoire .venv),
  2. Installation des dépendances nécessaires et génération d'un fichier uv.lock
  3. Execution de l'application dans cet environnement.

Dès lors uv run deviendra votre nouvelle façon d'exécuter l'application depuis une ligne de commande. Le fichier pyproject.toml centralise toutes les informations relatives aux dépendances et à la configuration de l'application et il est compatible avec de nombreux outils de l'écosystème Python.

Votre projet est maintenant prêt à évoluer.

Ajouter des dépendances

L'une des forces de Python est son écosystème de packages. Vous avez probablement déjà utilisé la commande pip install pour installer une nouvelle dépendance. Vous n'aurez plus besoin de faire cela (vous ne devrez plus faire cela au risque de ne pas avoir un environnement propre !!!).

Utilisez simplement uv add pour ajouter une dépendance dans l'environnement et l'ajouter au fichier pyproject.toml.

uv add flask

A partir de la vous pouvez éditer votre projet comme vous l'auriez fait dans un IDE (PyCharm, VSCode , VIM etc...)

Nous verrons dans de prochains articles comment enlever un package avec uv remove ou bien comment mettre à jour une dépendance. Dans un premier temps je vous déconseille d'éditer directement le fichier pyproject.toml mais nous verrons aussi que cela peut s'averer utile voir nécessaire.

Conclusion

Après cette introduction rapide sur uv nous l'utiliserons régulièrement dans tous nos projets. Nous explorerons des fonctionnalités plus avancées (linter, packages, tests, ...) dans de prochains articles. Nous aborderons des sujets tels que le calculs numériques (Simulation, Intégration, Visualisation), d'IA ou bien encore d'analyse de données (financières ou autres).

Liens utiles:

Tags : Python