uv: Мениджърът на пакети на Python, който замества pip, pip-tools и venv (2026 Ръководство)
Ако сте прекарали известно време в проект на Python тази година, вероятно сте виждали uv да се показва в README или CI файл. Това е написан на Rust мениджър на пакети и инструмент за virtualenv от Astral (същият екип зад ruff) — и е 10-100 пъти по-бърз от класическата комбинация pip/pip-tools/venv.
Това ръководство обхваща: какво всъщност замества uv, петте команди, които покриват 95% от това, което правите ежедневно, и двата случая, в които трябва да се придържате към класическите инструменти.
Какво замества uv
| Класически инструмент | uv еквивалент | Ускоряване |
|---|---|---|
| python -m venv .venv | uv venv | ~5x |
| pip install pkg | uv pip install pkg | ~10-50x |
| pip install -r requirements.txt | uv pip install -r requirements.txt | 20-100x на студен кеш |
| pip-compile (pip-инструменти) | uv pip compile | ~50x |
| python -m venv + source activate за всеки проект | uv стартиране <cmd> | Пропуска изцяло активирането |
Разликата в скоростта е реална. Инсталирането на умерен Django проект (Django + DRF + celery + redis + boto3 + ~40 транзитивни deps) на студен кеш отнема ~45 секунди с pip и ~2 секунди с uv. На топъл кеш uv е по същество мигновен, защото използва глобален твърдо свързан кеш, вместо да копира файлове във всеки venv.
Петте команди, които всъщност ще използвате
1. Инсталирайте самия uv
BASH# macOS + Linux — one line, no sudo, no Python needed curl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShell powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Or via brew / apt / your package manager (updated frequently) brew install uv
uv е единичен самостоятелен двоичен файл — без първоначално зареждане на Python, без собствени зависимости.
2. Създайте виртуална среда
BASHcd my-project uv venv # creates .venv/ using the current Python uv venv --python 3.13 # or pin a version — uv will download it if missing
За разлика от python -m venv, uv може да извлече версията на Python, която поискахте. Без повече "pyenv инсталирайте след това venv и след това активирайте" танц в три стъпки.
3. Инсталирайте пакети
BASHuv pip install fastapi httpx # into the current venv uv pip install -r requirements.txt # bulk install uv pip install -e . # editable install of current project
Синтаксисът е умишлено идентичен с pip — разменете pip с uv pip и всичко работи. Цена на миграцията: пет натискания на клавиши.
4. Изисквания за замразяване / компилиране
BASH# From an installed venv → requirements.txt (like `pip freeze`) uv pip freeze > requirements.txt # From a loose requirements.in → fully pinned requirements.txt (like pip-compile) uv pip compile requirements.in -o requirements.txt
Стъпката на „компилиране“ е детерминистична — същия вход, същия изход, байт за байт. Перфектен за възпроизводим CI.
5. Изпълнете команда без да активирате venv
BASHuv run pytest # runs pytest from the current venv uv run python manage.py migrate # any command, any script uv run --with ipython python # temporarily add ipython for this session
Това е убийствената функция. Край на source .venv/bin/activate преди всяка команда. Страхотен в CI, страхотен в Makefiles, страхотен в шел скриптове.
Мигриране на съществуващ проект (2 минути)
Ако приемем, че имате requirements.txt:
BASH# 1. Nuke the old venv rm -rf .venv # 2. Create the uv venv uv venv # 3. Install uv pip install -r requirements.txt # 4. Verify uv run python -c "import fastapi; print(fastapi.__version__)"
Четири команди, изпълнени. Вашият requirements.txt не трябва да се променя. Вашият pyproject.toml не трябва да се променя. Вашият CI почти няма нужда от промяна — разменете стъпката за инсталиране и сте готови.
Родният път на pyproject.toml (uv-първи проекти)
За проекти, започващи от нулата, използвайте собствения работен процес на uv — изобщо няма requirements.txt:
BASHuv init my-project # generates pyproject.toml + .python-version + .gitignore cd my-project uv add fastapi # adds fastapi to pyproject.toml [dependencies] AND installs uv add --dev pytest # adds to dev-dependencies uv sync # installs exactly what pyproject.toml says (uses uv.lock) uv lock --upgrade # bumps every dependency to its latest compatible version
Това е същата форма като cargo за Rust или npm за Node — един конфигурационен файл, един заключващ файл, детерминирани инсталации. Ако започвате на чисто през 2026 г., това е пътят.
Кога все още да използвате pip / venv
Два случая:
1. Наследени CI системи, които не могат да инсталират uv. Ако сте останали с агент на Jenkins от 2019 г. без достъп до обвивката, триенето от инсталирането на uv може да надхвърли увеличаването на скоростта. Всяка модерна CI система (GitHub Actions, GitLab CI, CircleCI, BuildKite) има едноредов uv инсталатор.
2. Airgapped среди със заключено `pip` огледало. uv по подразбиране е PyPI, но поддържа --index-url — това обикновено работи, но някои корпоративни огледала имат фини поведения (заглавки за удостоверяване, JSON API срещу Simple API), които uv обработва по различен начин. Тествайте преди да се ангажирате.
Това е. За всеки друг случай през 2026 г. — соло разработка, екипни проекти, отворен код, CI, Docker — uv е по-бърз, по-надежден и изисква по-малко умствени разходи от класическия стек.
30-секундната CI размяна
Преди (действия на GitHub):
YAML- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest
след:
YAML- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest
CI намалява от ~2 минути до ~15 секунди на стъпката на инсталиране. Ако вашата тестова матрица работи 5x на PR, това е истинско кумулативно спестяване.
uv е редкият инструмент, който е едновременно *по-бърз и по-опростен от това, което замества. Ако през 2026 г. пишете на Python, за да си изкарвате прехраната, прекарайте 10 минути в превключване на един проект. Навикът ще се пренесе във всеки нов проект, до който се докоснете.
Следваща стъпка: Python DevOps track обхваща uv, ruff, Docker и модерния стек за внедряване на Python — 104 интерактивни урока.