uv: Správce balíčků Python, který nahrazuje pip, pip-tools a venv (průvodce 2026)
Pokud jste tento rok strávili nějaký čas v projektu Python, pravděpodobně jste viděli, že se v souboru README nebo CI objevilo uv. Je to správce balíčků napsaný Rustem a nástroj virtualenv od společnosti Astral (stejný tým za ruff) — a je 10-100x rychlejší než klasická kombinace pip / pip-tools / venv.
Tato příručka pokrývá: co vlastně uv nahrazuje, pět příkazů, které pokrývají 95 % toho, co denně děláte, a dva případy, kdy byste měli zůstat u klasických nástrojů.
Co nahrazuje UV
| Klasický nástroj | UV ekvivalent | Zrychlení |
|---|---|---|
| python -m venv .venv | uv venv | ~5x |
| pip install pkg | uv pip install pkg | ~10-50x |
| pip install -r požadavky.txt | uv pip install -r požadavky.txt | 20-100x na studené mezipaměti |
| pip-compile (pip-tools) | "uv pip kompilace" | ~50x |
| python -m venv + aktivace zdroje pro každý projekt | uv run <cmd> | Úplně přeskočí aktivaci |
Rozdíl v rychlosti je skutečný. Instalace umírněného projektu Django (Django + DRF + celer + redis + boto3 + ~40 tranzitivních deps) na chladnou mezipaměť trvá ~45 sekund s pip a ~2 sekundy s uv. Na teplé mezipaměti je uv v podstatě okamžité, protože místo kopírování souborů do každého venv používá globální pevně propojenou mezipaměť.
Pět příkazů, které skutečně použijete
1. Nainstalujte samotný 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 je samostatný samostatný binární soubor – žádný bootstrap Pythonu, žádné vlastní závislosti.
2. Vytvořte virtuální prostředí
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
Na rozdíl od python -m venv může uv načíst verzi Pythonu, o kterou jste požádali. Už žádné „pyenv install then venv then activate“ tříkrokový tanec.
3. Nainstalujte balíčky
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
Syntaxe je záměrně totožná s pip — zaměňte pip za uv pip a vše funguje. Náklady na migraci: pět úhozů.
4. Požadavky na zmrazení / kompilaci
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
Krok „kompilace“ je deterministický – stejný vstup, stejný výstup, bajt po bajtu. Ideální pro reprodukovatelné CI.
5. Spusťte příkaz bez aktivace 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
Toto je zabijácká funkce. Už žádné source .venv/bin/activate před každým příkazem. Skvělé v CI, skvělé v Makefiles, skvělé ve skriptech shellu.
Migrace existujícího projektu (2 minuty)
Za předpokladu, že máte soubor 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__)"
Čtyři příkazy, hotovo. Váš soubor requirements.txt není třeba měnit. Váš pyproject.toml se nemusí měnit. Vaše CI se sotva potřebuje změnit – vyměňte krok instalace a máte hotovo.
Nativní cesta pyproject.toml (uv-first projekty)
Pro projekty začínající od nuly použijte nativní pracovní postup společnosti uv – žádný soubor 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
Toto je stejný tvar jako cargo pro Rust nebo npm pro Node – jeden konfigurační soubor, jeden soubor zámku, deterministické instalace. Pokud začínáte znovu v roce 2026, toto je cesta.
Kdy stále používat pip / venv
Dva případy:
1. Starší systémy CI, které nemohou nainstalovat UV. Pokud jste uvízli u agenta Jenkins z roku 2019 bez přístupu k shellu, tření při instalaci UV může převážit nárůst rychlosti. Každý moderní CI systém (GitHub Actions, GitLab CI, CircleCI, BuildKite) má jednořádkový UV instalátor.
2. Prostředí s airgapped s uzamčeným zrcadlem `pip`. uv je výchozí PyPI, ale podporuje --index-url — to obvykle funguje, ale některá podniková zrcadla mají jemné chování (auth headers, JSON API vs Simple API), které uv zpracovává jinak. Otestujte, než se zavážete.
To je vše. Pro každý další případ v roce 2026 – sólo vývoj, týmové projekty, open source, CI, Docker – je uv rychlejší, spolehlivější a vyžaduje menší mentální režii než klasický stack.
30sekundová výměna CI
Před (akce GitHubu):
YAML- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest
po:
YAML- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest
CI běží v kroku instalace pokles z ~2 minut na ~15 sekund. Pokud vaše testovací matice běží 5x za PR, je to skutečná kumulativní úspora.
uv je vzácný nástroj, který je obě rychlejší A jednodušší než to, co nahrazuje. Pokud píšete Python pro živobytí v roce 2026, věnujte 10 minut přepínání jednoho projektu. Zvyk se přenese do každého nového projektu, kterého se dotknete.
Další krok: stopa Python DevOps pokrývá uv, ruff, Docker a moderní sadu nasazení Pythonu – 104 interaktivních lekcí.