- uv est un installateur et résolveur de paquets Python ultra-rapide écrit en Rust, conçu pour remplacer les workflows
pipetpip-tools - uv constitue une étape vers un « Cargo for Python » : un gestionnaire complet de projets et de paquets Python, rapide, fiable et facile à utiliser
- Il est prévu de reprendre la gestion de Rye, l’outil de packaging Python développé de façon expérimentale par Armin Ronacher, et d’étendre uv comme projet successeur unifié
Une focalisation obsessionnelle sur les performances
- uv est 8 à 10 fois plus rapide que
pipetpip-toolssans cache, et 80 à 115 fois plus rapide avec cache. - Il utilise un cache global des modules pour éviter de retélécharger ou reconstruire les dépendances, et exploite le Copy-on-Write ainsi que les liens physiques sur les systèmes de fichiers pris en charge afin de minimiser l’utilisation de l’espace disque.
Optimisé pour l’adoption
- La version initiale de uv prend en charge les API de
pipetpip-tools, et peut être utilisée dans des projets existants sans modification de configuration. - uv est distribué sous la forme d’un unique binaire statique et peut remplacer
pip,pip-toolsetvirtualenv. - Il peut être installé séparément de Python lui-même, sans avoir à gérer l’installation de
pipselon la version de Python.
« Cargo for Python » : uv et Rye
- uv est une étape intermédiaire vers un gestionnaire unifié de paquets et de projets Python, rapide, fiable et simple à utiliser.
- uv vise à devenir un binaire unique englobant non seulement
pip,pip-toolsetvirtualenv, mais aussipipx,tox,poetry,pyenv,ruffet d’autres outils.
API compatibles
- À la place de
pip install, vous pouvez utiliseruv pip installpour installer des dépendances Python depuis la ligne de commande, un fichier de requirements oupyproject.toml. - À la place de
pip-compile, vous pouvez utiliseruv pip compilepour générer unrequirements.txtverrouillé. - À la place de
pip-sync, vous pouvez utiliseruv pip syncpour synchroniser unrequirements.txtverrouillé et un environnement virtuel.
Feuille de route
- Après cette version, le plan est de donner la priorité au support des utilisateurs tout en se concentrant sur l’amélioration de la compatibilité, des performances et de la stabilité.
- Ensuite, l’objectif est d’étendre uv pour en faire un gestionnaire complet de projets et de paquets Python.
Remerciements
- Des remerciements sont adressés à toutes les personnes ayant contribué directement ou indirectement au développement de uv.
- En particulier, merci à Jacob Finkelman et Matthieu Pizenberg, dont le solveur de versions de base PubGrub est utilisé dans uv.
L’avis de GN⁺
- uv est un outil innovant qui offre aux développeurs Python des performances bien supérieures à celles de
pip, ce qui peut réduire considérablement le temps de configuration des projets. - Écrit en Rust, il reflète une nouvelle tendance de l’écosystème Python mettant l’accent sur les performances et la stabilité, avec une amélioration attendue notable de l’expérience développeur.
- Le développement de uv vise à unifier les outils de packaging et de gestion de projets Python, ce qui devrait permettre aux développeurs de travailler de manière plus efficace et plus cohérente.
3 commentaires
La vitesse est vraiment impressionnante ;;
J’espère qu’il pourra s’étendre au point de remplacer conda.
Avis Hacker News
Doutes sur un pip-and-more soutenu par du capital-risque
Question sur l’absence de prise en charge par uv de la génération de lockfiles indépendants de la plateforme
Évaluation positive de la prise en charge par uv de stratégies alternatives de résolution des dépendances
--resolution=lowest.--python-version, de générer une résolution pour une version de Python différente de celle actuellement installée est excellent.Interrogation sur la complexité du système de paquets Python
Aspect intéressant de l’utilisation de pubgrub-rs par uv
Mention d’une prédiction sur la trajectoire de l’équipe Astral
Expérience personnelle sur la vitesse de pip
Point de vue sceptique sur un nouveau gestionnaire de paquets Python
Curiosité à propos du choix d’uv de générer des fichiers requirements.txt spécifiques à la plateforme
requirements.txtspécifiques à la plateforme plutôt que des fichierspoetry.locketpdm.lockindépendants de la plateforme.Félicitations et réaction positive au travail de l’équipe Astral
Question sur les problèmes de compilation de certains paquets pip