uv: A Python Package Manager, amely felváltja a pip-et, a pip-tools-okat és a venv-t (2026-os útmutató)
Ha ebben az évben egy Python-projektben töltött időt, valószínűleg látta, hogy az „uv” megjelenik egy README vagy CI fájlban. Ez egy Rust által írt csomagkezelő és virtualenv eszköz az Astraltól (ugyanaz a csapat, amely a "ruff" mögött áll) – és 10-100-szor gyorsabb, mint a klasszikus pip / pip-tools / venv kombináció.
Ez az útmutató a következőket tárgyalja: mit helyettesít valójában az uv, az öt parancs, amely a napi tevékenység 95%-át lefedi, és a két eset, amikor ragaszkodnia kell a klasszikus eszközökhöz.
Mit helyettesít az uv
| Klasszikus szerszám | uv egyenértékű | Gyorsítás |
|---|---|---|
| python -m venv .venv | "uv venv" | ~5x |
| pip install pkg | uv pip install pkg | ~10-50x |
| pip install -r követelmények.txt | uv pip install -r követelmények.txt | 20-100x hideg gyorsítótárban |
| pip-compile (pip-tools) | uv pip compile | ~50x |
| python -m venv + forrás aktiválása minden projekthez | uv run <cmd> | Teljesen kihagyja az aktiválást |
A sebességkülönbség valódi. Egy mérsékelt Django projekt (Django + DRF + zeller + redis + boto3 + ~40 tranzitív deps) telepítése hideg gyorsítótárra ~45 másodpercet vesz igénybe pip-vel és ~2 másodpercet uv-val. A meleg gyorsítótáron az uv lényegében azonnali, mert egy globális, merevített gyorsítótárat használ ahelyett, hogy minden egyes venv-be másolná a fájlokat.
A ténylegesen használt öt parancs
1. Telepítse magát az uv-t
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
Az uv egyetlen önálló bináris – nincs Python rendszerindító, nincsenek saját függőségek.
2. Hozzon létre egy virtualenv-t
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
A python -m venv-től eltérően az uv képes lekérni a kért Python verziót. Nincs több "pyenv telepítés, majd venv, majd aktiválás" háromlépéses tánc.
3. Telepítse a csomagokat
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
A szintaxis szándékosan megegyezik a "pip"-vel – cserélje le a "pip"-et "uv pip"-re, és minden működik. Áttelepítési költség: öt billentyűleütés.
4. Követelmények befagyasztása/fordítása
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
A fordítási lépés determinisztikus – ugyanaz a bemenet, ugyanaz a kimenet, bájtonként. Tökéletes reprodukálható CI-hez.
5. Futtasson egy parancsot a venv aktiválása nélkül
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
Ez a gyilkos funkció. Nincs többé source .venv/bin/activate minden parancs előtt. Kiváló CI-ben, nagyszerű Makefiles-ben, nagyszerű shell-szkriptekben.
Meglévő projekt áttelepítése (2 perc)
Feltéve, hogy van egy "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__)"
Négy parancs, kész. A "requirements.txt" fájlt nem kell módosítani. A "pyproject.toml" fájlt nem kell módosítani. A CI-n alig kell változtatni – cserélje ki a telepítési lépést, és kész.
A pyproject.toml natív elérési útja (UV-first projektek)
A nulláról induló projektekhez használja az uv natív munkafolyamatát – egyáltalán nincs követelmény.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
Ez ugyanaz az alak, mint a „cargo” a Rust vagy az „npm” a Node esetében – egy konfigurációs fájl, egy zárfájl, determinisztikus telepítések. Ha 2026-ban újrakezdi, ez az út.
Mikor érdemes még mindig használni a pip / venv-t?
Két eset:
1. Korábbi CI-rendszerek, amelyek nem tudják telepíteni az UV-t. Ha egy 2019-es Jenkins-ügynökhöz ragadt, és nincs shell-hozzáférése, az UV telepítésének súrlódása meghaladhatja a sebességnövekedést. Minden modern CI-rendszer (GitHub Actions, GitLab CI, CircleCI, BuildKite) rendelkezik egysoros UV-telepítővel.
2. Lezárt "pip" tükörrel ellátott légrés környezetek. Az uv alapértelmezés szerint a PyPI-t használja, de támogatja az "--index-url"-t – ez általában működik, de egyes vállalati tükrök finom viselkedésűek (auth fejlécek, JSON API vs. Simple API), amelyeket az uv eltérően kezel. Tesztelj, mielőtt elköteleznéd magad.
Ennyi. 2026-ban minden más esetben – egyéni fejlesztés, csapatprojektek, nyílt forráskód, CI, Docker – az uv gyorsabb, megbízhatóbb, és kevesebb mentális ráfordítást igényel, mint a klasszikus verem.
A 30 másodperces CI-csere
Előtte (GitHub-műveletek):
YAML- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest
Utána:
YAML- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest
A CI futtatása ~2 percről ~15 másodpercre csökken a telepítési lépésben. Ha a tesztmátrix PR-onként 5-ször fut, az igazi kumulatív megtakarítás.
Az uv az a ritka eszköz, amely mindkettő gyorsabb ÉS egyszerűbb, mint amit helyettesít. Ha 2026-ban megélhetési Pythont ír, szánjon 10 percet egy projekt átváltására. Ez a szokás minden új projektre kiterjed, amelyet megérint.
Következő lépés: a Python DevOps pálya az uv-t, a ruff-ot, a Dockert és a modern Python-telepítési veremet tartalmazza – 104 interaktív leckét.