Что это такое
uv — инструмент Astral для Python-пакетов и проектов, написанный на Rust. Он закрывает задачи, которые раньше часто делили между `pip`, `pip-tools`, `venv`, `pipx`, `poetry`, `pyenv` и отдельными скриптами.
Идея проекта — ускорить и упростить повседневный цикл Python: создать проект, зафиксировать зависимости, установить их, запустить скрипт в изолированном окружении, поставить консольный инструмент или выбрать версию Python.
Что внутри и как используют
В репозитории — Rust-код разрешателя зависимостей, установщика, команд управления проектом, работы с файлами блокировки, запуска инструментов и установки Python-версий. Документация показывает отдельные сценарии: проекты, скрипты, инструменты и версии Python.
Типовой сценарий: в новом проекте запускают `uv init`, добавляют зависимости, фиксируют lock-файл и используют `uv run` для команд. Для одноразовых инструментов применяют `uvx`, чтобы не засорять глобальное окружение.
Базовый цикл проекта
Команды показывают, как uv берет на себя создание проекта, добавление зависимости и запуск кода внутри управляемого окружения.
uv init app
cd app
uv add requests
uv run python -c "import requests; print(requests.__version__)"
Сильные стороны
Сильная сторона — скорость и единая модель. uv особенно заметен в CI, больших проектах и командах, где установка зависимостей повторяется много раз. Чем чаще окружение пересобирается, тем сильнее ощущается выигрыш.
Ограничения
Ограничение — миграция привычек. В Python-экосистеме уже есть много инструментов, и не каждый проект готов менять процесс. Перед переходом стоит проверить совместимость lock-файлов, внутренние зеркала, CI, публикацию пакетов и требования команды.