Qu'est-ce que uv en Python ?

uv Python : qu'est-ce que c'est et comment l'utiliser ?

Publié le par Gabriel Trouvé (mis à jour le )

23 minutes

EN COURS DE REDACTION

Vous connaissez certainement la routine par coeur : on installe Python, on crée un environnement virtuel avec python -m venv venv, on l'active, on lance pip install, et pour jongler entre les différentes versions de Python, on ajoute pyenv par dessus (que je trouve d'ailleurs très pratique).

C'est ce que j'ai toujours fait. Quand je suis passé à uv j'étais un peu perdu au début tellement j'avais mes habitudes ancrées. D'ailleurs, uv est déjà énormément adopté dans l'écosystème Python. Voyons ensemble pourquoi, et surtout comment l'utiliser.

Qu'est-ce que uv ?

uv est un gestionnaire de paquets et de projet Python, écrit en Rust par Astral, la même équipe derrière le linter ruff. Son objectif est de remplacer à lui seul toute une panoplie d'outils : pip, venv, virtualenv, pyenv, pipx et même poetry avec un seul exécutable.

Son principal argument c'est sa vitesse : 10 à 100 fois plus rapide que pip. Une installation de dépendance est quasiment instantanée.

Pour vous donner une idée de l'engouement : uv dépasse les 126 millions de téléchargements mensuels en mars 2026. Ce même mois, OpenAI a carrément racheté Astral.

De pip + venv à uv

C'est LA partie la plus importante. Le déclic se fait quand on comprend que uv s'occupe de l'environnement virtuel à votre place. Reprenons un workflow "habituel" :

# 1. On crée un environnement virtuel
python -m venv venv

# 2. On l'active (et il faut penser à le faire à chaque fois !)
source venv/bin/activate

# 3. On installe nos paquets
pip install requests

# 4. On fige les versions à la main
pip freeze > requirements.txt

# 5. On lance enfin notre code
python main.py
SHELL

Avec uv, on ne crée plus d'environnement virtuel manuellement, on ne l'active plus, et on ne fait plus de pip freeze. Tout ça est géré automatiquement en coulisses. Voici la correspondance directe :

Correspondance pip venv et uv

Correspondance pip venv et uv

Une fois ces commandes en tête, vous avez compris 80% de uv.

À noter

Si vous utilisez aussi pyenv pour jongler entre plusieurs versions de Python, sachez que uv le remplace également : pyenv install 3.12 devient uv python install 3.12. On y revient juste après.

Installer uv

uv est autonome : il n'a pas besoin d'avoir Python installé au préalable pour l'installer.

Sur macOS et Linux :

curl -LsSf https://astral.sh/uv/install.sh | sh
SHELL

Sur Windows (via PowerShell) :

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
POWERSHELL

À noter

Pour les utilisateurs macOS, vous pouvez installer uv en passant par Homebrew via la commande brew install uv.

Vous retrouverez les différentes façons d'installer uv sur cette page.

Une fois l'installation terminée, pour vérifier que tout fonctionne :

uv --version
SHELL

À noter

Comme uv est indépendant de Python, c'est lui qui se chargera ensuite de télécharger les versions de Python dont vous avez besoin. Et quand une nouvelle version de uv sort, un simple uv self update suffit à le mettre à jour. Et si vous êtes passez par Homebrew : brew update && brew upgrade.

Créer son premier projet

Pour créer un projet, une seule commande suffit :

uv init patrick
cd patrick
BASH

uv génère l'arborescence suivante :

.
├── .git/
├── .gitignore
├── .python-version
├── README.md
├── main.py
└── pyproject.toml
BASH

Le fichier main.py contient déjà un petit programme. Lançon le :

uv run main.py
# Affiche : Hello from patrick!
SHELL

Il vient de se passer plusieurs choses. uv a créé l'environnement virtuel (.venv), installé les dépendances nécessaires, généré un fichier uv.lock et a exécuté le code dans cet environnement.

Vous devez avoir :

.
├── .git/
├── .gitignore
├── .python-version
├── .venv/
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
SHELL

Regardons les fichiers importants :

  • pyproject.toml : le fichier standard de l'écosystème Python moderne. Il content les métadonnées de votre projet

  • .python-version : il indique à uv quelle version de Python utiliser pour ce projet

  • .venv : votre environnement virtuel où sont installées les dépendances du projet

  • uv.lock : le fichier de verrouillage. Il liste els versions exactes de toutes vos dépendances

Gérer ses dépendances

Pour ajouter une dépendance, on utilise uv add. Pas besoin (ou plus besoin) d'activer quoi que ce soit :

uv add requests
SHELL

Cette commande met à jours trois fichiers : pyproject.toml, .venv, uv.lock. Il est aussi possible d'installer une version particulière :

uv add 'requests==2.31.0'
SHELL

Pour vos outils de développement (tests, linter, etc.), on les sépare des dépendances de production avec --dev :

uv add --dev pytest ruff
PYTHON

dev est un groupe de dépendances déjà reconnu par uv. pytest et ruff sont rangés dans une table à part de votre pyproject.toml :

[project]
name = "patrick"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.8"
dependencies = [
    "requests>=2.32.4",
]

[dependency-groups]
dev = [
    "pytest>=8.3.5",
    "ruff>=0.15.20",
]
SHELL

uv runet uv sync installent toujours vos dépencances de production et le groupe dev. Pour obtenir uniquement l'environnement de production, sans pytest ni ruff, il faut explicitement demander à uv de l'exclure :

uv sync --no-dev
SHELL

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.