UV как альтернатива Poetry
Пакетных менеджеров для питона как‑то слишком много. У этого, конечно, есть очевидная причина — скудность функционала pip, встроенного пакетного менеджера. Но всё равно внутренний перфекционист хочет простое решение из коробки. Установил питон — и сразу получаешь быстрый и удобный пакетный менеджер, и ещё желательно менеджер версий питона. Но вместо этого получаешь pip. Кто‑то, конечно, его реально пользует, но всё‑таки poetry, pdm, conda, pipenv или хотя бы pip‑tools гораздо удобнее.
Ну окей, казалось бы — всем хорош poetry. Я сам использую его в большинстве проектов. Но установка зависимостей начинает казаться медленной — особенно при пересборке docker‑контейнера. Плюс гемор с установкой самого poetry или со сменой версий питона — меняешь версию через, например, pyenv, а poetry при попытке пересоздания окружения выдает ошибку. Хотя предполагается что умеет работать с разными версиями питона. Решается, конечно, легко — через указание полного пути к интерпретатору, но всё равно костыли. Как и установка того же pyenv, и вообще работа с ним. А больше контролировать версии питона, вроде как, нечем.
И вот, в феврале появилось интересное решение от создателей Ruff. Пакетный менеджер UV, написанный на расте. Чисто консольный, конечно, причём синтаксис очень напоминает poetry. По функционалу это почти одно и то же, но с кучей плюшек и в несколько раз быстрее. В доке приведена вот такая диаграмма времени установки одинакового набора зависимостей:
Читать далее