UV - пакетный менеджер Python
Что такое UV?
UV (сайт) — это чрезвычайно быстрый пакетный менеджер Python, написанный на Rust. Разработан как замена для pip
и pip-tools
. Помимо этого он может собой заменить venv
и pyenv
. Но обо всем по порядку.
UV (или Universal Virtualenv) — это пакетный менеджер для Python, который был разработан для улучшения управления окружениями и пакетами в Python. Хотя проект не так широко известен, как pip или conda, он предполагает несколько основных функций и преимуществ:
Основные особенности UV
-
Управление виртуальными окружениями: UV позволяет пользователям легко создавать и управлять изолированными окружениями, что помогает избежать конфликтов между зависимостями разных проектов.
-
Простота использования: Предоставляет интуитивно понятный интерфейс командной строки, который позволяет пользователям быстро устанавливать и обновлять пакеты.
-
Совместимость с pip: UV совместим с pip, что позволяет устанавливать пакеты из PyPI и использовать все преимущества существующих библиотек Python.
-
Кроссплатформенность: Работает на различных операционных системах, таких как Windows, macOS и Linux.
-
Управление пакетами: Включает возможность установки, обновления и удаления пакетов с легким доступом к их зависимостям.
Установка UV
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
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"
pip install uv
pipx install uv
brew install uv
Как пользоваться
-
Создание нового виртуального окружения:
uv create myenv uv myenv
-
Активация окружения:
uv activate myenv # On macOS and Linux. source .venv/bin/activate # On Windows. .venv\Scripts\activate
-
Установка пакета:
uv install package_name
- Установка библиотек:
Ставим flask
uv pip install flask
Установка из requirements.txt
uv pip install -r 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 — это интересный пакетный менеджер, может быть полезным инструментом для разработчиков Python, которым нужно быстро управлять окружениями и пакетами. Несмотря на то, что более известные менеджеры, такие как pip
и conda
, могут предлагать больше функций и интеграций, UV
дает возможность упростить процесс разработки и тестирования в различных окружениях. Управление виртуальным окружением и управление версиями Python делают UV
инструментом 3 в 1, что только добавляет ему привлекательности.