Всем привет! Недавно познакомился с замечательным пакетным менеджером UV. Хочу и Вас с ним познакомить!
Hidden text
На хабре статей не нашел. В русском сегменте youtube так же ничего нет. Если это не так — сорян)
Что такое UV?
UV (сайт) — это чрезвычайно быстрый пакетный менеджер Python, написанный на Rust. Разработан как замена для pip и pip-tools. Помимо этого он может собой заменить venv и pyenv. Но обо всем по порядку.
Бенчмарки от разработчиков — это хорошо, но я решил сам проверить насколько он хорош. Замеры весьма условные и синтетические. Сделаны больше для сопоставления нежели для реального сравнения. Время в секундах.
Команда |
|
pip |
uv |
Создание окружения |
real |
3,468 |
0,028 |
user |
3,468 |
0,000 |
|
Установка flask |
real |
19,166 |
0,024 |
user |
2,465 |
0,019 |
|
Установка requests(для сравнения) |
real |
37,865 |
1,055 |
user |
1,820 |
0,096 |
Результаты весьма достойные!
Установка UV
On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
For a specific version.
curl -LsSf https://astral.sh/uv/0.2.23/install.sh | sh
powershell -c "irm https://astral.sh/uv/0.2.23/install.ps1 | iex"
With pip.
pip install uv
With pipx.
pipx install uv
With Homebrew.
brew install uv
Создание окружения
uv venv
Активация окружения
On macOS and Linux.
source .venv/bin/activate
On Windows.
.venv\Scripts\activate
Установка библиотек
uv pip install flask # Ставим flask
uv pip install -r requirements.txt # Установка из requirements.txt
Фиксация зависимостей
uv pip freeze | uv pip compile - -o requirements.txt
Что еще умеет UV?
Первое — это работа с виртуальным окружением(как создать окружение показал выше).
Второе, но не по значению — это управления версиями Python. Есть проект pyenv и думаю тут UV сможет его потеснить. Если кратко, то pyenv — это система управления версиями Python на вашем компьютере. Скажем, стоит у Вас Python 3.10, а Вы хотите поставить 3.8. У Вас два варианта — или скачать с официального сайта и скомпилировать, или поставить pyenv и уже с его помощью поставить интерпретатор нужной версии и создавать от него окружения.
А тут все в одном инструменте!
1) Ставим нужную версию Python
uv python install 3.12
2) Проверяем что все установилось
uv python list
3) Создаем окружение с новой версией
uv venv -p /home/timur/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/bin/python3 venv2
source venv2/bin/activate
Вуаля! Теперь у нас новый Python и новое окружение к нему.
Помимо этого можно ставить утилиты через uv tool, но я, если честно, не особо этим пользовался.
Так же есть возможность управлять кэшем пакетов через uv cache.
Как итог
Плюсы:
-
Самый огромный плюс — это скорость.
-
Синтаксис. Если умеете работать с pip, то большинство команд будут вам знакомы.
-
Работа с виртуальным окружением — пушка!
-
Работа с версиями Python — просто бомба!
-
Платформозависимые lockfile.
-
Нет фиксации контрольной суммы зависимой библиотеки как в том же poetry.
-
Пока не получится посмотреть дерево зависимостей как в poetry.
UV — это интересный пакетный менеджер. Он очень быстрый и понятный в силу своей похожести на pip. Управление виртуальным окружением и управление версиями Python делают UV инструментом 3 в 1, что только добавляет ему привлекательности. Думаю, он уже сейчас может конкурировать с poetry и другими крупными пакетными менеджерами.
ссылка на оригинал статьи https://habr.com/ru/articles/828016/
Добавить комментарий