Virtuálne prostredia Pythonu v roku 2026: venv, uv, pipx, poézia – kedy použiť ktoré
Každý tutoriál Pythonu hovorí „použite virtuálne prostredie“ a ide ďalej. Toto ide o niečo navyše: čo vlastne JE Venv, štyri nástroje, ktoré sa oplatí poznať v roku 2026, 60-sekundový rozhodovací strom na výber toho správneho a dve chyby, ktoré prerušia vaše nastavenie do týždňa.
Čo je to vlastne virtuálne prostredie
Venv je adresár obsahujúci symbolický odkaz tlmočníka Pythonu plus súkromný `site-packages/`. Keď je "aktivovaný", PATH predpíše <venv>/bin, takže python a pip vo vašom shellu ukazujú na kópie venv. pip install X zapisuje do site-packages/ venv, nie do systémového Pythonu.
To je všetko. Žiadna mágia. Je to priečinok so symbolickým odkazom a súborom pyvenv.cfg.
BASH$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2
Všetko ostatné (aktivácia skriptov, wrapperov, správcov balíkov) je pohodlie nad týmto tvarom.
Prečo ho vždy potrebujete
Bez venv zapíše pip install X do vášho systému Python site-packages/. Tri problémy:
1. Konflikty. Projekt A potrebuje django==4.2; Projekt B potrebuje django==5.1. Bez ventilov to nejde.
2. Reprodukovateľnosť. „Funguje na mojom počítači“ je systémový problém Pythonu. Snímka venv JE prostredie.
3. Vyčistenie. Odstrániť projekt? Odstráňte jeho priečinok venv. Inštalácie systému Python sa hromadia navždy.
V macOS 12+ a väčšine distribúcií Linuxu je teraz system-Python vlastnený OS – pip môže dokonca odmietnuť inštaláciu bez „--break-system-packages“. To je náznak.
4 nástroje, ktoré sa oplatí poznať
1. venv — základná línia stdlib
Dodáva sa s každou inštaláciou Pythonu 3.3+. Nulové závislosti. Univerzálna náhrada:
BASHpython -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell
Použite, keď: píšete návod, zabezpečujete, aby skript fungoval všade, alebo v uzamknutom CI, kde nemôžete nič nainštalovať.
2. uv — moderné predvolené (2026)
Hrdzavý, 10-100x rýchlejší ako pip. Nahrádza venv + pip + pip-tools + pyenv-download-python. Úplnú prehliadku nájdete v našom uv deep-dive.
BASHuv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says
Použite, keď: akýkoľvek projekt 2026 – sólo, tím, CI, Docker. Rozdiel v rýchlosti na studenej vyrovnávacej pamäti je skutočný (45 s pip → 2 s uv na typickom projekte Django).
3. pipx — pre nástroje CLI
Keď nainštalujete CLI ako ruff, httpie, black, youtube-dl, mypy, nechcete, aby to bolo vo vašom projekte venv (prečo sa spoliehať na ruff, aby import project.things fungoval?). A v systémovom Pythone to nechcete (konflikty). pipx umiestňuje každý do vlastného izolovaného venv, ale odhaľuje CLI globálne:
BASHpipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .
Použite, keď: inštalujete CLI založené na Pythone. Základné pravidlo: pipx nainštalujte X, ak X dodáva spustiteľný súbor, ktorý by ste spustili z akéhokoľvek projektu; uv pip install X, ak X je knižnica, ktorú importujete.
Moderná náhrada: uv tool install ruff robí to isté bez samostatnej inštalácie pipx. Vyberte si buď.
4. poézia — zrelá schránka závislosti (klesajúci podiel)
Predtým, ako pristálo uv, bola „poézia“ hlavným nástrojom moderného balenia. Vynikajúci prekladač závislostí, deterministický poetry.lock, úzka integrácia s pyproject.toml. Stále pevné - ale pomalšie ako UV a zvyšuje kognitívnu réžiu.
BASHpoetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish
Použite, keď: existujúci projekt už používa poéziu alebo potrebujete doplnky špecifické pre poéziu (napr. poetry-plugin-export). Pre NOVÉ projekty v roku 2026 vás „uv“ dostane rýchlejšie s menšou stopou.
60-sekundový rozhodovací strom
To je všetko. 90 % vývojárov Pythonu si dnes môže vybrať z tohto zoznamu bez toho, aby potrebovali pyenv, virtualenvwrapper, pew alebo conda.
Conda — špeciálny prípad
conda je samostatný vesmír: správca balíkov + správca venv + distribútor Pythonu + správca knižnice C, primárne pre vedecký Python. Ak robíte náročnú numerickú prácu so zásobníkmi numpy / scipy / pandas / GPU, ktoré potrebujú zodpovedajúce verzie CUDA + cuDNN, miniconda môže stále stáť za to – predkompilované binárne súbory šetria hodiny v porovnaní s pip.
V opačnom prípade: obyčajný UV je teraz konkurencieschopný aj na vedeckých zásobníkoch (inštalácie numpy / pandy sú sekundy, nie minúty). Nesiahajte po conda, pokiaľ špecificky nepotrebujete viazací pip C-knižnice, ktorý sa nedá ľahko vyrobiť.
Dve chyby, ktoré pokazia vaše nastavenie do týždňa
1. Odovzdanie .venv/ do git
Venv obsahuje:
- Absolútne cesty k vašej konkrétnej inštalácii Pythonu.
- Kompilované súbory
.pyc. - Binárne súbory, ktoré sú špecifické pre OS.
Commit that → váš spoluhráč v systéme Windows nemôže nič spustiť. NAJPRV pridajte .venv/ (a venv/, .env/) do súboru .gitignore a potom vytvorte venv.
2. Aktivácia v nesprávnom prostredí
source .venv/bin/activate nastavuje premenné env iba v AKTUÁLNOM prostredí. Ak otvoríte novú kartu terminálu, vrátite sa späť do systémového Pythonu. Dva bezpečné vzory:
1. Znova aktivujte každú reláciu – štandardný postup.
2. `uv run` / `poetry run` / `python -m project` — vôbec sa neaktivuje. Spúšťajte príkazy z nového prostredia s predponou nástroja. Skvelé v Makefiles, CI, npm-scriptoch, git hookoch.
Pravidlo pre skripty: ak ide o jednoriadkové spustenie z CI alebo Makefile, NEAKTIVUJTE — použite uv run pytest alebo úplnú cestu .venv/bin/pytest. Aktivácia je len pre interaktívne shelly.
Migrácia medzi nástrojmi
pip + venv → uv:
BASHrm -rf .venv uv venv uv pip install -r requirements.txt
Requirements.txt funguje doslovne. Dve minúty.
poézia → uv:
BASHuvx migrate-to-uv # community tool, converts pyproject.toml
venv → poézia:
BASHpoetry init poetry add $(pip freeze | cut -d= -f1)
Overenie
Po nastavení vždy skontrolujte, KTORÝ Python + pip používate:
BASH$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv
Ak „ktorý python“ po aktivácii ukazuje cestu k systému, niečo nie je v poriadku – zvyčajne ste aktivovali v podshell, ktorý už skončil.
Virtuálne prostredia sú jednou z mála tém Pythonu, kde je moderná odpoveď (2026) skutočne jednoduchšia ako historická odpoveď. uv pre nové projekty, venv pre skripty, pipx pre CLI. Hotovo.
Ďalší krok: Skladba Python DevOps zahŕňa uv + ruff + Docker + moderný balík nasadenia Pythonu – praktické so skutočným Pythonom spusteným vo vašom prehliadači.