30 points par darjeeling 2025-07-07 | 4 commentaires | Partager sur WhatsApp

Résumé de la vidéo "uv: Making Python Local Workflows FAST and BORING in 2025"

Cette vidéo est la deuxième partie consacrée à la manière d’utiliser l’outil de packaging Python uv pour rendre les workflows de développement local rapides et efficaces. Voici les points clés.

1. Utiliser les commandes essentielles de uv
  • uv run : exécute des commandes comme pytest ou fastapi dans un environnement virtuel en utilisant les dépendances définies dans pyproject.toml et verrouillées dans le fichier uv.lock.
  • uv add : ajoute une nouvelle dépendance à pyproject.toml et met automatiquement à jour le fichier uv.lock.
  • uv run --with : permet d’injecter temporairement des modules d’aide au développement comme pdbpp sans les ajouter aux dépendances principales du projet.
  • uv lock --upgrade : met à jour le fichier de verrouillage des dépendances à très grande vitesse. Lors de l’exécution, uv run détecte automatiquement les changements du fichier de verrouillage et synchronise l’environnement.
2. Standardiser le workflow avec just
  • uv n’intègre pas de fonctionnalité pour définir des commandes personnalisées comme hatch ou pdm.
  • La vidéo souligne les limites du Makefile (dépendance à la plateforme, syntaxe non standard, etc.) et recommande fortement comme alternative just, un exécuteur de commandes écrit en Rust.
  • Avec un justfile, on peut standardiser sous forme de recettes les tâches répétitives suivantes.
    • test : exécuter les tests (avec possibilité de transmettre des arguments)
    • cov : vérifier la couverture de test
    • serve : lancer le serveur de développement
    • checkall : exécuter en une seule fois tous les contrôles, comme le lint et la vérification de types
3. Intégration de just avec uv
  • Fichier .env : just peut lire un fichier .env pour définir des variables d’environnement. Cela permet de construire un workflow flexible, par exemple en ajoutant dynamiquement des arguments --with à uv run ou en changeant le port du serveur.
  • uvx (uv tool run) : commande permettant d’exécuter des paquets PyPI indépendamment du projet, comme pipx. Dans une recette just, on peut ainsi utiliser des outils comme httpie sans les ajouter aux dépendances du projet.
4. Gérer directement l’environnement virtuel (workflow optionnel)
  • Cette approche s’adresse aux développeurs qui préfèrent activer et utiliser l’environnement virtuel (.venv) de façon traditionnelle, sans passer par uv run.
  • uv sync : synchronise l’état du fichier uv.lock et du dossier .venv. (installation des dépendances et suppression des paquets inutiles)
  • direnv : outil shell qui exécute automatiquement un script .envrc lorsqu’on entre dans un répertoire donné. On peut l’utiliser pour lancer automatiquement uv sync à l’entrée dans le répertoire et activer l’environnement virtuel.
Conclusion

En combinant la rapidité de uv avec des outils comme just et direnv, il devient possible d’automatiser et de standardiser la gestion des dépendances ainsi que l’exécution des commandes, afin que les développeurs puissent se concentrer davantage sur la logique métier. On obtient ainsi un environnement de développement « rapide et ennuyeux », c’est-à-dire très stable et prévisible.

4 commentaires

 
gracefullight 2025-07-10

J’ai créé un template pour utiliser https://github.com/gracefullight/py-starter.

 
aabb2467 2025-07-08

Avec poethepoet, on peut définir et utiliser des tâches dans pyproject.toml, donc je l’utilise à la place de just.

 
gracefullight 2025-07-10

Merci.