uv - Nouveau gestionnaire de packages Python, de projets et d'environnements

Les points positifs de Python uv

Sommaire

Python uv (lu « you-vee ») est un outil moderne et performant de gestion de paquets et de projets Python écrit en Rust. Il est conçu comme un remplacement plug-and-play des outils traditionnels de gestion de paquets Python tels que pip, pip-tools, virtualenv, pipx et pyenv, visant à simplifier et accélérer les workflows de développement Python.

uv est développé par Astral, l’équipe derrière le populaire linter Python Ruff, et est conçu pour répondre aux problèmes courants de l’écosystème Python — tels que les installations lentes, les conflits de dépendances et la gestion complexe des environnements — en exploitant les performances de Rust et l’architecture logicielle moderne.

uv python ultra-violet spa

Fonctionnalités principales de uv

  • Vitesse exceptionnelle : uv est nettement plus rapide que les outils traditionnels — généralement 8 à 10 fois plus rapide que pip sans cache, et jusqu’à 80 à 115 fois plus rapide avec un cache chaud.
  • Outil tout-en-un : Combine l’installation de paquets, la résolution des dépendances, la gestion des environnements virtuels, la gestion des versions Python, la création de projets et l’exécution de scripts dans un seul outil.
  • Compatibilité : Propose une interface de ligne de commande compatible avec pip, facilitant son adoption sans courbe d’apprentissage importante.
  • Gestion robuste des dépendances : Fournit une résolution précise des dépendances et un support de fichiers de verrouillage pour des environnements reproductibles.
  • Environnements virtuels automatiques : Crée et gère automatiquement les environnements virtuels, réduisant la configuration manuelle.
  • Support multiplateforme : Fonctionne sur macOS, Linux et Windows.
  • Installation autonome : Peut être installé sans nécessiter Python ou Rust, en utilisant un simple installateur ou curl.

uv vs poetry vs pdm vs pip performance comparison

Toujours pas convaincu d’utiliser uv ?

  • Performance : Réduit de manière spectaculaire les temps d’installation des paquets et de résolution des dépendances.
  • Simplicité : Unifie plusieurs outils en un seul, simplifiant la configuration et la gestion des projets.
  • Fiabilité : Fournit des environnements cohérents et reproductibles avec des messages d’erreur clairs et une résolution des conflits.
  • Normes modernes : Supporte pyproject.toml pour la configuration du projet, s’alignant sur les normes actuelles de l’emballage Python.

Exemples d’utilisation

Essayons quelque chose d’excitant !

  • Démarrer un nouveau projet :
uv init myproject
cd myproject
uv add requests
uv run python script.py

Cela crée un répertoire de projet, configure un environnement virtuel, installe les dépendances et exécute les scripts dans un environnement isolé.

  • Gérer des scripts avec des dépendances en ligne :
uv add --script script.py requests
uv run script.py

uv peut gérer les dépendances pour des scripts à fichier unique sans fichiers de dépendances séparés.

Comparaison avec les outils traditionnels

Fonctionnalité uv pip/virtualenv Poetry
Vitesse Très rapide Lente Modérée
Environnements virtuels Automatique Manuel Automatique
Résolution des dépendances Avancée Basique Avancée
Gestion des versions Python Oui Non (nécessite pyenv) Non
Support des fichiers de verrouillage Oui Non (nécessite pip-tools) Oui
Exécution de scripts Intégrée Non Limitée

Comment installer et commencer à utiliser UV sur votre système

Pour installer et commencer à utiliser uv sur votre système, suivez ces étapes simples :

Installation

  1. Installateur autonome (recommandé)
    • Linux/macOS :
curl -LsSf https://astral.sh/uv/install.sh | sh

Ou, si vous préférez wget :

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell) :
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Version spécifique : Vous pouvez demander une version spécifique en l’incluant dans l’URL, par exemple : https://astral.sh/uv/0.7.15/install.sh.
  1. Alternative : Installer via pip (si Python est installé)
pip install uv

Note : Cette méthode n’est pas recommandée pour une utilisation système globale à moins que vous ne sachiez ce que vous faites, car elle peut encombrer votre environnement Python système.

  1. Installer via pipx (pour une installation isolée, à l’échelle utilisateur)
pipx install uv

Cette méthode est plus propre pour une utilisation globale si vous utilisez déjà pipx.

Démarrage

Pour Vérifier l’installation - Exécutez :

uv

Vous devriez voir un menu d’aide confirmant que uv est installé et prêt à l’emploi.

Pour Créer et activer un environnement virtuel :

  • Créer un venv :
uv venv test
  • Activer-le sur Linux/macOS :
source test/bin/activate
  • Activer-le sur Windows :
.\test\Scripts\activate

Maintenant, vous pouvez utiliser uv pip install pour installer des paquets dans cet environnement.

Initialiser un nouveau projet

uv init

Cela crée un pyproject.toml et un .gitignore pour votre projet.

Ajouter des dépendances

Ajouter un paquet :

uv add

Cela met à jour pyproject.toml et génère/mets à jour le fichier de verrouillage.

Synchroniser les dépendances

Installer toutes les dépendances dans votre environnement :

uv sync

Ou, utiliser l’interface compatible avec pip :

uv pip install

Cela garantit que toutes les dépendances sont installées conformément à votre fichier de verrouillage.

Exécuter des scripts

Utilisez :

uv run script.py

Cela gère automatiquement l’environnement et les dépendances de votre script.

Intégration avec le shell (optionnel)

Pour un workflow plus fluide, vous pouvez ajouter l’intégration avec le shell à votre .zshrc ou .bashrc pour activer automatiquement un environnement virtuel par défaut et aliaser pip vers uv pip.

Avec ces étapes, vous aurez uv installé et vous serez prêt à gérer vos projets Python avec vitesse et facilité.

Installer des versions spécifiques de Python

Vous pouvez utiliser uv pour installer des versions spécifiques de Python et les gérer pour vos projets.

  • Installer la dernière version stable de Python :
    uv python install
    
    Cette commande télécharge et installe la dernière version stable de Python disponible.
  • Installer une version spécifique :
    uv python install 3.12
    
    Cela installe la dernière version de correctif de Python 3.12 (par exemple, 3.12.3).
  • Installer une version exacte de correctif :
    uv python install 3.12.3
    
    Cela installe exactement Python 3.12.3.
  • Installer plusieurs versions :
    uv python install 3.9 3.10 3.11
    
    Cela installe Python 3.9, 3.10 et 3.11.
  • Installer une version correspondant à une contrainte :
    uv python install '>=3.8,=3.11'
    
    Cela modifie la contrainte de version de Python du projet.

Notes supplémentaires

Téléchargements automatiques : Par défaut, uv téléchargera et installera automatiquement les versions de Python requises si elles ne sont pas trouvées sur votre système.

Python système : uv peut utiliser les installations Python existantes si elles sont présentes, ou vous pouvez forcer l’utilisation de Python système avec l’indicateur --no-managed-python.

Mises à jour : Vous pouvez mettre à jour les versions de Python gérées par uv vers la dernière version de correctif avec :

uv python upgrade 3.12

Ou mettre à jour toutes les versions installées :

uv python upgrade

Les mises à jour entre les versions mineures (par exemple, 3.12 vers 3.13) ne sont pas prises en charge.

En résumé, uv fournit des outils flexibles et puissants pour installer, gérer et utiliser des versions spécifiques de Python dans vos projets.

Comment UV découvre les interpréteurs Python disponibles sur différents systèmes

UV découvre les interpréteurs Python disponibles sur différents systèmes en vérifiant un ensemble de localisations bien définies et en interrogeant chaque candidat pour ses métadonnées de version. Voici comment cela fonctionne :

  • Installations Python gérées :
    UV commence par vérifier le répertoire spécifié par la variable d’environnement UV_PYTHON_INSTALL_DIR, où il stocke ses propres versions de Python gérées.
  • Chemin système (PATH) :
    Sur macOS et Linux, UV vérifie les exécutables nommés python, python3 ou python3.x (où x est un numéro de version) dans les répertoires listés dans le PATH système. Sur Windows, il recherche python.exe.
  • Emplacements spécifiques à Windows :
    Sur Windows, UV vérifie également le registre Windows et les interpréteurs Python du Microsoft Store à l’aide de la sortie de py --list-paths.
  • Environnements virtuels :
    Si un environnement virtuel est actif ou spécifié, UV vérifie l’interpréteur dans cet environnement pour la compatibilité avant de rechercher ailleurs.
  • Interrogation des métadonnées :
    Chaque exécutable découvert est interrogé pour ses métadonnées de version. Seuls les exécutables correspondant à la version demandée (ou à la contrainte de version) sont pris en compte. Les fichiers non exécutables sont ignorés.
  • Préférence et recours :
    Par défaut, UV préfère les installations de Python système, mais vous pouvez ajuster cela avec des options pour préférer les versions gérées ou utiliser uniquement les versions gérées/système. Si aucun interpréteur approprié n’est trouvé, UV peut télécharger et installer la version requise.

Ce processus de découverte robuste garantit que UV peut fiablement localiser et utiliser l’interpréteur Python correct sur différents systèmes d’exploitation et environnements.

Liens utiles