uv: Менеджер пакетів Python, який замінює pip, pip-tools і venv (посібник 2026)
Якщо ви проводили якийсь час у проекті Python цього року, ви, напевно, бачили, що uv з'являється у файлі README або CI. Це розроблений на Rust менеджер пакунків і інструмент virtualenv від Astral (та сама команда, що стоїть за ruff) — і він у 10-100 разів швидший за класичну комбінацію pip/pip-tools/venv.
Цей посібник охоплює: що насправді замінює uv, п’ять команд, які охоплюють 95% того, що ви робите щодня, і два випадки, коли слід дотримуватися класичних інструментів.
Що замінює УФ
| Класичний інструмент | УФ-еквівалент | Прискорення |
|---|---|---|
| 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 run <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
Крок «компіляції» є детермінованим — той самий вхід, той самий вихід, байт за байтом. Ідеально підходить для відтворюваної КІ.
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-first)
Для проектів, починаючи з нуля, використовуйте власний робочий процес uv — взагалі без вимог.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. Середовища із зазором із заблокованим дзеркалом `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 секунд на етапі встановлення. Якщо ваша тестова матриця виконується 5 разів на PR, це реальна кумулятивна економія.
uv — це рідкісний інструмент, який швидший і простіший, ніж той, який він замінює. Якщо ви будете писати Python, щоб заробляти на життя у 2026 році, витратите 10 хвилин на перемикання одного проекту. Ця звичка буде застосовуватися до кожного нового проекту, до якого ви торкаєтеся.
Наступний крок: курс Python DevOps охоплює uv, ruff, Docker і сучасний стек розгортання Python — 104 інтерактивні уроки.