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, что только добавляет ему привлекательности.