bythe.net
← К ленте
Проект

uv: один бинарник вместо pip, venv и pyenv

Astral переписала инструменты Python на Rust. uv ставит пакеты, создаёт окружения, тянет нужный интерпретатор и запускает скрипты одной командой.

Что это

uv — менеджер пакетов и проектов для Python от Astral, той же команды, что сделала линтер ruff. Написан на Rust, распространяется одним бинарником и закрывает сразу несколько ролей: pip, pip-tools, virtualenv, pyenv и частично pipx.

Ключевая идея проста: не нужно объяснять новичку, чем venv отличается от virtualenv, зачем requirements.txt и requirements.in, и почему pip иногда ставит не то, что в lock-файле. Один инструмент, одна ментальная модель.

Как это выглядит в работе

Новый проект начинается с трёх команд:

uv init myapp
cd myapp
uv add httpx

После этого в каталоге лежат pyproject.toml, uv.lock и .venv. Окружение создаётся автоматически, интерпретатор нужной версии скачивается, если его нет на машине. Запуск — через uv run:

uv run python main.py
uv run pytest

Установка зависимостей на CI — uv sync --frozen. Если lock-файл разошёлся с pyproject.toml, команда упадёт вместо того, чтобы тихо подтянуть свежие версии.

Скрипты с зависимостями в шапке

Отдельно удобная вещь — inline-метаданные по PEP 723. Одиночный скрипт может объявить свои зависимости прямо в комментарии:

# /// script
# dependencies = ["requests", "rich"]
# ///
import requests
from rich import print

uv run script.py сам соберёт временное окружение и запустит файл. Для утилит «на один раз» это снимает всю боль с pip install в системный Python.

Скорость

Установка пакетов у uv заметно быстрее pip: резолвер написан на Rust, файлы кешируются глобально и линкуются в окружение вместо копирования. На больших проектах разница ощущается как «секунды вместо минут», особенно на повторных установках.

Что стоит знать

  • uv совместим с requirements.txt и умеет команды в стиле uv pip install, так что переход можно делать постепенно.
  • Lock-файл uv.lock кроссплатформенный: один файл описывает зависимости для Linux, macOS и Windows.
  • uv tool install заменяет pipx для установки CLI-утилит в изолированные окружения.
  • Проект открытый, лицензия MIT или Apache 2.0 на выбор.

Вывод

uv стал тем инструментом, о котором в Python-мире говорили десять лет: быстрый, целостный и не требующий знать историю экосистемы. Если у вас ещё живёт связка pyenv + pip-tools + virtualenvwrapper, это хороший момент её заменить.

Войти, чтобы оценить материал

Комментарии

Войти, чтобы оставить комментарий