uv: Python Package Manager koji zamjenjuje pip, pip-tools i venv (Vodič za 2026.)
Ako ste proveli neko vrijeme u Python projektu ove godine, vjerojatno ste vidjeli da se uv pojavljuje u README ili CI datoteci. To je upravitelj paketa napisan na Rustu i alat virtualenv tvrtke Astral (isti tim koji stoji iza ruff) — i 10-100 puta je brži od klasične kombinacije pip/pip-tools/venv.
Ovaj vodič pokriva: što uv zapravo zamjenjuje, pet naredbi koje pokrivaju 95% onoga što radite dnevno i dva slučaja u kojima biste se trebali držati klasičnih alata.
Što UV zamjenjuje
| Klasični alat | uv ekvivalent | Ubrzavanje |
|---|---|---|
| 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 na hladnom cacheu |
| pip-compile (pip-alati) | uv pip compile | ~50x |
| python -m venv + source activate za svaki projekt | uv run <cmd> | Potpuno preskače aktivaciju |
Razlika u brzini je stvarna. Instalacija umjerenog Django projekta (Django + DRF + celery + redis + boto3 + ~40 transitive deps) na hladnu predmemoriju traje ~45 sekundi s pipom i ~2 sekunde s uv. Na toplom cacheu uv je u biti trenutačan jer koristi globalni hard-linked cache umjesto kopiranja datoteka u svaki venv.
Pet naredbi koje ćete zapravo koristiti
1. Instalirajte sam 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 jedna samostalna binarna datoteka — nema Python bootstrapa, nema vlastitih ovisnosti.
2. Stvorite virtualenv
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
Za razliku od python -m venv, uv može dohvatiti verziju Pythona koju ste tražili. Nema više "pyenv instaliraj pa venv pa aktiviraj" plesa u tri koraka.
3. Instalirajte pakete
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
Sintaksa je namjerno identična pip - zamijenite pip za uv pip i sve radi. Cijena migracije: pet pritisaka tipki.
4. Zamrzni / prevedi zahtjeve
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
Korak compile je deterministički — isti ulaz, isti izlaz, bajt za bajt. Savršeno za ponovljivi CI.
5. Pokrenite naredbu bez aktiviranja 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
Ovo je ubojita značajka. Nema više source .venv/bin/activate prije svake naredbe. Izvrstan u CI-ju, odličan u Makefilesu, odličan u skriptama ljuske.
Migracija postojećeg projekta (2 minute)
Pod pretpostavkom da imate 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__)"
Četiri naredbe, izvršeno. Vaš requirements.txt ne treba mijenjati. Vaš pyproject.toml ne treba mijenjati. Vaš CI jedva da treba promijeniti — zamijenite korak instalacije i gotovi ste.
Izvorni put pyproject.toml (uv-prvi projekti)
Za projekte koji počinju od nule, koristite izvorni tijek rada uv-a — nema zahtjeva.txt uopće:
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
Ovo je isti oblik kao cargo za Rust ili npm za Node — jedna konfiguracijska datoteka, jedna datoteka za zaključavanje, determinističke instalacije. Ako počinjete iznova u 2026., ovo je put.
Kada još koristiti pip / venv
Dva slučaja:
1. Naslijeđeni CI sustavi koji ne mogu instalirati uv. Ako ste zapeli s Jenkinsovim agentom iz 2019. bez pristupa ljusci, trenje instaliranja uv-a može nadmašiti povećanje brzine. Svaki moderni CI sustav (GitHub Actions, GitLab CI, CircleCI, BuildKite) ima jednolinijski UV instalater.
2. Okruženja bez zraka sa zaključanim `pip` zrcalom. uv prema zadanim postavkama postavlja PyPI, ali podržava --index-url — to obično funkcionira, ali neka korporativna zrcala imaju suptilna ponašanja (zaglavlja za autentifikaciju, JSON API vs Simple API) koja uv obrađuje drugačije. Testirajte prije nego što se obvežete.
To je to. Za svaki drugi slučaj u 2026. — solo dev, timski projekti, open source, CI, Docker — uv je brži, pouzdaniji i zahtijeva manje mentalnih troškova od klasičnog skupa.
CI zamjena od 30 sekundi
Prije (GitHub radnje):
YAML- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest
nakon:
YAML- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest
CI se smanjuje s ~2 minute na ~15 sekundi u koraku instalacije. Ako se vaša testna matrica izvodi 5x po PR-u, to je prava kumulativna ušteda.
uv je rijedak alat koji je i brži I jednostavniji od onoga što zamjenjuje. Ako 2026. pišete Python za život, provedite 10 minuta mijenjajući jedan projekt. Navika će se prenijeti na svaki novi projekt kojeg se dotaknete.
Sljedeći korak: Python DevOps staza pokriva uv, ruff, Docker i moderni Python niz za implementaciju — 104 interaktivne lekcije.