Python uv — Modèles courants : dépendances, uvx et exécution de scripts

3 min read

Cet article se concentre sur les cinq tâches de développement quotidiennes les plus courantes, avec des modèles pratiques utilisables tout de suite. Maîtrisez ces modèles et vous couvrirez 80 % des cas — les 20 % restants sont pour la partie avancée.

Modèle 1 : Ajouter et retirer des dépendances

# Ajouter une dépendance
uv add requests
uv add "requests>=2.31,<3"   # avec contraintes de version
 
# Dépendances de dev (tests, lint, typage)
uv add --dev pytest ruff mypy
 
# Retirer
uv remove requests

uv add met à jour en même temps pyproject.toml, uv.lock et .venv — une seule commande suffit.

Modèle 2 : uv run pour exécuter les commandes du projet

Pour les scripts, CLI et tests du projet, utilisez toujours uv run :

uv run python main.py
uv run pytest
uv run ruff check .
uv run mypy src/

Pas d'activation, pas de risque de mauvais Python.

Modèle 3 : uvx pour lancer des outils CLI autonomes

Vous voulez lancer un outil temporairement sans l'ajouter au projet ? Utilisez uvx (équivalent à uv tool run) :

# À la demande, jetable
uvx ruff check .
uvx pycowsay "hello uv"
 
# Fixer une version
uvx ruff@0.5.0 check
 
# Quand le nom du paquet et la commande diffèrent
uvx --from httpie http https://httpbin.org/get

uvx crée un environnement temporaire pour exécuter l'outil sans polluer le projet — comme goûter sans acheter le paquet. Idéal pour les « je veux juste essayer ».

Modèle 4 : Dépendances inline pour scripts (PEP 723)

Un seul script, pas envie de créer un projet ? Utilisez les métadonnées inline :

# /// script
# dependencies = ["requests", "rich"]
# ///
 
import requests
from rich.pretty import pprint
 
r = requests.get("https://api.github.com/zen")
pprint(r.text)
uv add --script fetch.py requests rich
uv run fetch.py

Ou en une ligne :

uv run --with requests --with rich fetch.py

Modèle 5 : Migrer depuis requirements.txt

Un projet existant avec un requirements.txt ? Intégrez-le directement :

uv add -r requirements.txt

Ou compiler vers un lockfile puis synchroniser :

uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt

Après migration, considérez pyproject.toml comme la source de vérité — requirements.txt peut servir de format d'export.

Suite

Une fois les modèles quotidiens en main, si vous voulez tester le changement de version Python, l'interface pip ou un setup monorepo : 👉 Avancé