UV
Le gestionnaire de paquets et d'environnements Python ultra-rapide, écrit en Rust par
l'équipe Astral. Un remplaçant moderne pour pip, venv,
pip-tools et pyenv.
À quoi ça sert
Quand on développe en Python, on a besoin de plusieurs outils :
- Une version de Python spécifique (3.11, 3.12…)
- Un environnement virtuel isolé pour ne pas mélanger les dépendances entre projets
- Un gestionnaire de paquets pour installer les bibliothèques (FastAPI, NumPy…)
- Un fichier de verrouillage pour figer les versions et garantir des installs reproductibles
Historiquement, ça veut dire jongler entre pyenv, venv,
pip et pip-tools. UV remplace tout ça par un
seul outil, et il est 10 à 100 fois plus rapide que pip.
UV = un seul outil pour gérer Python, les environnements virtuels et les paquets, beaucoup plus vite que la stack classique.
Un exemple d'usage
Imagine : tu démarres un nouveau projet d'API avec FastAPI. Avec la stack classique, tu fais quelque chose comme :
python3 -m venv .venv
source .venv/bin/activate
pip install fastapi uvicorn
pip freeze > requirements.txt
Avec UV, c'est plus direct, plus rapide, et tu obtiens en prime un fichier de lock reproductible :
uv init mon-api
cd mon-api
uv add fastapi uvicorn
uv run uvicorn main:app --reload
UV crée automatiquement l'environnement virtuel, installe Python si besoin, ajoute les
dépendances dans pyproject.toml, génère un uv.lock, et lance
ton serveur. Pas besoin d'activer manuellement le venv.
How-to : installer et utiliser UV
-
Installer UV sur ton PC
Sur Linux / macOS, lance dans un terminal :
bashcurl -LsSf https://astral.sh/uv/install.sh | shSur Windows (PowerShell) :
powershellpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Vérifie que tout est OK :
bashuv --version -
Créer un nouveau projet
UV scaffolde toute la structure pour toi :
bashuv init hello-uv cd hello-uvTu obtiens un
pyproject.toml, unmain.py, un.python-version, et un dossier.venvsera créé au premieruv run. -
Ajouter des dépendances
Avec
uv add, le paquet est installé, ajouté àpyproject.tomlet figé dansuv.lock:bashuv add requests uv add --dev pytest -
Écrire un petit script d'exemple
Remplace le contenu de
main.pypar ceci :pythonimport requests def main(): r = requests.get("https://api.github.com") print("Status:", r.status_code) print("Routes dispo:", len(r.json())) if __name__ == "__main__": main() -
Exécuter le projet
Pas besoin d'activer le venv :
uv runs'en charge.bashuv run python main.pyTu devrais voir s'afficher le code 200 et le nombre de routes de l'API GitHub.
-
Configurer VS Code
Pour que VS Code utilise l'environnement créé par UV :
- Installe l'extension Python de Microsoft.
- Ouvre la palette de commandes (
Ctrl+Shift+P/Cmd+Shift+P). - Tape
Python: Select Interpreter. - Choisis l'interpréteur dans
./.venv/bin/python(ou.venv\Scripts\python.exesur Windows).
VS Code détectera l'environnement automatiquement et tu pourras lancer / déboguer tes scripts directement depuis l'éditeur.
AstuceTu peux figer ce choix dans le projet en créant
.vscode/settings.jsonavec"python.defaultInterpreterPath": ".venv/bin/python". -
Cloner un projet existant en UV
Si quelqu'un te partage un projet UV, la mise en route tient en une commande :
bashgit clone <url-du-repo> cd <dossier> uv syncuv synctélécharge la bonne version de Python, crée le venv et installe exactement les versions duuv.lock. Tu es prêt.
Aide-mémoire des commandes
# Projet
uv init <nom> # nouveau projet
uv sync # installer les deps du lock
# Dépendances
uv add <paquet> # ajouter une dep
uv add --dev <paquet> # dep de développement
uv remove <paquet> # retirer une dep
uv lock --upgrade # mettre à jour le lock
# Exécution
uv run <cmd> # lancer dans le venv
uv run python script.py
uv run pytest
# Python
uv python install 3.12 # installer une version
uv python list # lister les versions dispo
Pour aller plus loin
- Documentation officielle : docs.astral.sh/uv
- Repo GitHub : github.com/astral-sh/uv