Bez virtual environment sdílíte závislosti mezi projekty — a to vede k version conflictům, nedeterministickým buildům a klasickému “works on my machine” problému. Projekt A vyžaduje Django 4.2, projekt B Django 5.0, a bez izolace se navzájem rozbíjejí. Virtual environment vytvoří izolovaný Python s vlastní sadou balíčků pro každý projekt.
venv — vestavěný¶
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
pip install -r requirements.txt
deactivate
Modul venv je součástí standardní knihovny od Pythonu 3.3. Vytvoří adresář .venv s kopií Python interpreteru a prázdným site-packages. Aktivace nastaví PATH tak, aby python a pip ukazovaly na izolované prostředí. Každý projekt má vlastní verze knihoven bez kolizí s globální instalací.
uv — moderní alternativa¶
# Instalace
curl -LsSf https://astral.sh/uv/install.sh | sh
# Použití
uv venv
uv pip install flask
uv pip compile requirements.in -o requirements.txt
uv od Astral (tvůrci Ruffu) je napsaný v Rustu a nabízí 10-100x rychlejší instalaci balíčků než pip. Podporuje pip-compatible rozhraní, lock soubory a resolution kompatibilní s pip. Pro nové projekty je uv doporučená volba — kombinuje rychlost s kompatibilitou. Poetry a PDM jsou alternativy pro projekty vyžadující pokročilý dependency management s vlastním lock formátem.
Best practices¶
- .venv v .gitignore — virtuální prostředí se necommituje
- requirements.txt nebo pyproject.toml — deklarativní závislosti
- Lock file (uv.lock, poetry.lock) — reprodukovatelné buildy s přesnými verzemi
- Jedna env per projekt — nikdy nesdílejte env mezi projekty
- CI/CD — v pipeline vždy vytvářejte čistou env od nuly
Klíčový takeaway¶
Vždy používejte virtual environment pro každý Python projekt. uv je nejrychlejší volba pro nové projekty, Poetry nebo PDM pro komplexní projekty s mnoha interními závislostmi.