pip, venv, Poetry, pyenv, pipx... chaque projet Python te force à jongler entre une demi-douzaine d'outils qui se marchent dessus. Résultat : des environnements cassés, des dépendances qui s'entrechoquent, et des requirements.txt qui prennent la poussière dans un coin du repo. uv est le gestionnaire tout-en-un écrit en Rust par Astral, les créateurs de Ruff. Il remplace tout ça avec un seul binaire, et il est dix à cent fois plus rapide que pip. Voici comment t'en servir, en sept étapes.
1. Installer uv en trente secondes
Le plus simple, c'est le script d'installation officiel. Sur Linux et macOS :
curl -LsSf https://astral.sh/uv/install.sh | shSur Windows, ouvre PowerShell et tape :
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Tu peux aussi passer par pip si tu préfères, avec pip install uv, ou par brew install uv sur macOS. Vérifie que tout roule avec un uv --version.
2. Créer un projet en une commande
Pas besoin de créer un dossier à la main, de lancer python -m venv puis d'activer l'environnement à chaque session. Une seule commande suffit :
uv init mon-projet
cd mon-projetuv init génère trois choses : un fichier pyproject.toml, un main.py d'exemple et un fichier .python-version. Le pyproject.toml devient ton unique fichier de configuration, fini le trio requirements.txt, setup.py et setup.cfg.
3. Ajouter des dépendances
Ajouter une librairie revient à la nommer. uv add installe la dépendance et la note dans ton pyproject.toml en même temps :
uv add requests richuv résout les versions, télécharge les paquets et crée l'environnement virtuel .venv au passage. Pour une dépendance réservée au développement, comme les tests ou le linter, ajoute l'option --dev :
uv add --dev pytest ruffEt pour retirer un paquet, c'est aussi simple : uv remove requests.
4. Lancer ton script sans activer d'environnement
C'est ici que uv montre sa vraie force. La commande uv run exécute ton script dans le bon environnement, automatiquement, sans que tu aies à activer quoi que ce soit. Remplace le contenu de main.py par :
import requests
rep = requests.get("https://api.github.com/repos/astral-sh/uv")
data = rep.json()
print(f"{data['full_name']} : {data['stargazers_count']} étoiles")Puis lance :
uv run main.pySi le module n'est pas encore installé, uv le récupère à la volée. Le même principe fonctionne pour n'importe quelle commande : uv run pytest, uv run ruff check ., et ainsi de suite.
5. Gérer les versions de Python
pyenv devient inutile. uv installe et gère tes interpréteurs Python à ta place. Installe la version qu'il te faut, puis fixe-la pour le projet :
uv python install 3.12
uv python pin 3.12La commande pin met à jour le fichier .python-version. La prochaine fois que quelqu'un lance uv run dans le projet, la bonne version de Python sera téléchargée automatiquement si elle manque.
6. Installer des outils en ligne de commande
Tu utilises des utilitaires comme ruff, httpie ou cowsay ? uv tool install remplace pipx et les place dans un environnement isolé, accessible depuis n'importe où :
uv tool install ruffEnsuite, tu les lances normalement : ruff check .
7. Verrouiller et partager ton environnement
Le fichier uv.lock fige les versions exactes de toutes tes dépendances. Quand tu partages ton projet, tes collègues n'ont qu'une commande à taper pour recréer un environnement identique au tien :
uv syncuv sync lit le pyproject.toml et le uv.lock, installe tout, et monte l'environnement. Le fameux « ça marche chez moi » disparaît du vocabulaire de l'équipe.
uv ne fait rien de plus que ce que tu faisais déjà. Il fait exactement pareil, mais en une commande, dix à cent fois plus vite, et sans te laisser casser ton environnement en route. Si tu démarres un projet Python aujourd'hui, surtout un projet d'IA où les dépendances s'empilent à vitesse grand V, commence-le avec uv. Ton futur toi te dira merci.






