Aller au contenu principal
Outils Python2026-07-29 · 7 min de lecture

uv : Le gestionnaire de packages Python qui remplace pip, pip-tools et venv (Guide 2026)

Si vous avez passé du temps sur un projet Python cette année, vous avez probablement vu « uv » apparaître dans un fichier README ou CI. Il s'agit d'un gestionnaire de paquets écrit en Rust et d'un outil virtualenv d'Astral (la même équipe derrière ruff) — et il est 10 à 100 fois plus rapide que le combo classique pip/pip-tools/venv.

Ce guide couvre : ce que uv remplace réellement, les cinq commandes qui couvrent 95 % de ce que vous faites quotidiennement et les deux cas où vous devez vous en tenir aux outils classiques.

Ce que les UV remplacent

| Outil classique | équivalent UV | Accélération |

|---|---|---|

| python -m venv .venv | uv venv | ~5x |

| pip install paquet | uv pip install pkg | ~10-50x |

| pip install -r exigences.txt | uv pip install -r exigences.txt | 20-100x sur cache froid |

| pip-compile (pip-outils) | compilation pip uv | ~50x |

| python -m venv + source activate pour chaque projet | uv exécuter <cmd> | Ignore complètement l'activation |

La différence de vitesse est réelle. L'installation d'un projet Django modéré (Django + DRF + céleri + redis + boto3 + ~ 40 dépôts transitifs) sur un cache froid prend ~ 45 secondes avec pip et ~ 2 secondes avec uv. Sur un cache chaud, uv est essentiellement instantané car il utilise un cache global lié en dur au lieu de copier des fichiers dans chaque venv.

Les cinq commandes que vous utiliserez réellement

1. Installez uv lui-même

BASH
# macOS + Linux — one line, no sudo, no Python needed curl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShell powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Or via brew / apt / your package manager (updated frequently) brew install uv

uv est un binaire unique et autonome – pas de bootstrap Python, pas de dépendances propres.

2. Créez un environnement virtuel

BASH
cd my-project uv venv # creates .venv/ using the current Python uv venv --python 3.13 # or pin a version — uv will download it if missing

Contrairement à python -m venv, uv peut récupérer la version Python que vous avez demandée. Fini la danse en trois étapes "pyenv install puis venv then activate".

3. Installer les packages

BASH
uv pip install fastapi httpx # into the current venv uv pip install -r requirements.txt # bulk install uv pip install -e . # editable install of current project

La syntaxe est intentionnellement identique à « pip » — remplacez « pip » par « uv pip » et tout fonctionne. Coût de migration : cinq frappes.

4. Exigences de gel/compilation

BASH
# From an installed venv → requirements.txt (like `pip freeze`) uv pip freeze > requirements.txt # From a loose requirements.in → fully pinned requirements.txt (like pip-compile) uv pip compile requirements.in -o requirements.txt

L'étape de « compilation » est déterministe : même entrée, même sortie, octet pour octet. Parfait pour les CI reproductibles.

5. Exécutez une commande sans activer le venv

BASH
uv run pytest # runs pytest from the current venv uv run python manage.py migrate # any command, any script uv run --with ipython python # temporarily add ipython for this session

C’est la fonctionnalité qui tue. Plus de « source .venv/bin/activate » avant chaque commande. Excellent en CI, excellent en Makefiles, excellent en scripts shell.

Migration d'un projet existant (2 minutes)

En supposant que vous ayez un requirements.txt :

BASH
# 1. Nuke the old venv rm -rf .venv # 2. Create the uv venv uv venv # 3. Install uv pip install -r requirements.txt # 4. Verify uv run python -c "import fastapi; print(fastapi.__version__)"

Quatre commandes, c'est fait. Votre requirements.txt n'a pas besoin d'être modifié. Votre pyproject.toml n'a pas besoin d'être modifié. Votre CI a à peine besoin de changer : échangez l'étape d'installation et vous avez terminé.

Le chemin natif de pyproject.toml (projets uv-first)

Pour les projets partant de zéro, utilisez le flux de travail natif d'uv — pas de fichier requis du tout :

BASH
uv init my-project # generates pyproject.toml + .python-version + .gitignore cd my-project uv add fastapi # adds fastapi to pyproject.toml [dependencies] AND installs uv add --dev pytest # adds to dev-dependencies uv sync # installs exactly what pyproject.toml says (uses uv.lock) uv lock --upgrade # bumps every dependency to its latest compatible version

C'est la même forme que « cargo » pour Rust ou « npm » pour Node : un fichier de configuration, un fichier de verrouillage, des installations déterministes. Si vous repartez à zéro en 2026, c’est la voie à suivre.

Quand utiliser encore pip / venv

Deux cas :

1. Systèmes CI hérités qui ne peuvent pas installer uv. Si vous êtes coincé avec un agent Jenkins de 2019 sans accès au shell, les difficultés liées à l'installation d'uv peuvent l'emporter sur le gain de vitesse. Chaque système CI moderne (GitHub Actions, GitLab CI, CircleCI, BuildKite) dispose d'un programme d'installation UV sur une seule ligne.

2. Environnements aérés avec un miroir `pip` verrouillé. uv est par défaut PyPI mais prend en charge --index-url — cela fonctionne généralement, mais certains miroirs d'entreprise ont des comportements subtils (en-têtes d'authentification, API JSON vs API simple) que uv gère différemment. Testez avant de vous engager.

C'est ça. Pour tous les autres cas en 2026 (développement solo, projets d'équipe, open source, CI, Docker), uv est plus rapide, plus fiable et nécessite moins de surcharge mentale que la pile classique.

L'échange CI de 30 secondes

Avant (actions GitHub) :

YAML
- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest

Après :

YAML
- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest

Les exécutions de CI passent d'environ 2 minutes à environ 15 secondes lors de l'étape d'installation. Si votre matrice de test s'exécute 5x par PR, cela représente une véritable économie cumulée.


uv est le rare outil qui est à la fois plus rapide ET plus simple que ce qu'il remplace. Si vous écrivez Python pour gagner votre vie en 2026, passez 10 minutes à changer de projet. L’habitude se perpétuera dans chaque nouveau projet que vous aborderez.

Prochaine étape : le piste Python DevOps couvre uv, ruff, Docker et la pile de déploiement Python moderne – 104 leçons interactives.

Prêt à l'essayer ?

15 cours gratuits après une inscription gratuite — pas de carte. Goûtez à la plateforme, puis décidez.

Commencez gratuitement →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.