Python uv — Avancé : versions Python, interface pip et installation d'outils
Quand les besoins passent de « pourvu que ça tourne » à « tests multi-versions, pipelines rétrocompatibles et outils globaux », uv suit. Cet article vous fait passer du donjon en solo au raid en équipe.
Gestion des versions Python
uv intègre le téléchargement et la gestion de Python — pas besoin d'installer pyenv à part.
# Installer plusieurs versions
uv python install 3.10 3.11 3.12
# Fixer la version d'un projet (crée .python-version)
uv python pin 3.11
# Créer un venv avec une version précise
uv venv --python 3.12
# Exécuter avec une version donnée
uv run --python 3.10 pytestLa première utilisation d'une version déclenche un téléchargement — les suivantes utilisent le cache.
Interface compatible pip
Votre CI, Docker ou scripts utilisent encore pip ? uv fournit un remplacement drop-in :
# Équivalent à pip install -r requirements.txt
uv pip install -r requirements.txt
# Compiler les requirements (cross-plateforme, reproductible)
uv pip compile requirements.in --universal -o requirements.txt
# Synchroniser l'environnement (strictement depuis le lockfile)
uv pip sync requirements.txt
# Créer un venv
uv venvPassez à uv pip et les paramètres sont quasi identiques, mais la vitesse fait un bond — comme passer du vélo à la moto : même route, expérience totalement différente. Vous voulez moderniser un projet legacy sans tout casser ? Commencez par uv pip, décollage en douceur.
Installation d'outils globaux (uv tool)
Vous ne voulez pas lancer uvx à chaque fois pour des outils que vous utilisez souvent ? Installez-les globalement :
uv tool install ruff
uv tool install httpie
# Appel direct ensuite
ruff check .
http https://httpbin.org/getMettre à niveau un outil ou tous d'un coup :
uv tool upgrade ruff
uv tool upgrade --all
uv tool installcrée des environnements isolés qui n'entrent pas en conflit avec les dépendances du projet. Pour des versions fixées au projet, utilisez toujoursuv add --dev.
Lockfile et shebang pour scripts
Vous voulez qu'un script unique soit aussi reproductible ? Vous pouvez verrouiller ses dépendances :
uv lock --script example.pyCela crée example.py.lock. Quand vous lancez uv run example.py, ce lockfile est utilisé.
Ou le rendre exécutable :
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["httpx"]
# ///
import httpx
print(httpx.get("https://example.com"))chmod +x fetch
./fetchSuite
Avec les capacités avancées en poche, appliquez une checklist pour limiter les risques : 👉 Bonnes pratiques