====== Python ======
===== Návod: Izolovaná instalace Python projektů pomocí Virtual Environment =====
Když instaluješ Python balíčky globálně, hrozí, že ti:
* Systém bude plný nepotřebných souborů
* Může dojít ke konfliktům verzí mezi projekty
* Těžko se pak zbavíš věcí, které už nepotřebuješ
**Řešení**: Virtuální prostředí (Virtual Environment) – izolovaná složka pro každý projekt.
==== Co je Virtual Environment ====
Virtual Environment je jako samostatný "kontejner" pro Python balíčky. Všechno, co nainstalujete, zůstane v jedné složce a neovlivní zbytek systému.
**Výhody:**
* **Čistý systém** – nic se nenamontuje do `/usr/` nebo `~/.local/`
* **Izolace** – každý projekt má své balíčky v samostatné složce
* **Snadné smazání** – chceš projekt vymazat? Stačí smazat složku
* **Bez konfliktů** – jeden projekt může mít Python 3.9, jiný 3.11, bez problémů
* **Reprodukovatelnost** – stejný postup = stejný výsledek vždy
==== Krok za krokem: Nastavení projektu ====
=== 1. Vytvoř složku pro projekt ===
mkdir ~/projekty/muj-projekt
cd ~/projekty/muj-projekt
Můžeš si zvolit jakékoli místo na disku. Doporučuji `~/projekty/` pro přehlednost.
=== 2. Vytvoř virtuální prostředí ===
python3 -m venv venv
Tím se vytvoří složka `venv/` s úplně novým Python prostředím. Název `venv` je konvence, ale můžeš si zvolit jakýkoli název.
=== 3. Aktivuj virtuální prostředí ===
source venv/bin/activate
Poznáš to podle příkazového řádku – měl by se ti objevit prefix `(venv)`:
(venv) uživatel@počítač:~/projekty/muj-projekt$
=== 4. Aktualizuj pip (správce balíčků) ===
pip install --upgrade pip
=== 5. Nainstaluj potřebné balíčky ===
pip install numpy pandas requests
# nebo podle toho, co potřebuješ
Všechny balíčky se nainstalují do `venv/lib/python3.x/site-packages/`.
=== 6. Deaktivuj prostředí (když skončíš) ===
deactivate
Příkazový řádek se vrátí do normálního stavu.
----
==== Čtení projektu po čase ====
Pokud se vrátíš k projektu později:
cd ~/projekty/muj-projekt
source venv/bin/activate
# Teď můžeš pracovat jako dřív
Virtuální prostředí si pamatuje, jaké balíčky byly nainstalovány.
----
==== Užitečné příkazy ====
=== Kontrola nainstalovaných balíčků ===
pip list
Zobrazí všechny balíčky v aktivním virtuálním prostředí.
=== Kontrola velikosti virtuálního prostředí ===
du -sh venv/
Uvidíš, kolik místa zabírá složka `venv/`.
=== Úplné smazání projektu ===
cd ~/projekty/
rm -rf muj-projekt/
Tím zmizí všechno – projekt, kód, balíčky, všechno. Místo se uvolní.
----
==== Stahování vs. instalace: Co se kde nachází ====
Když spustíš `pip install`, dějí se dvě věci:
=== 1. Stahování do cache (~500 MB – 2 GB) ===
~/.cache/pip/
Pip si ukládá stažené balíčky do cache. Slouží to jako "paměť" – když nainstaluješ stejný balíček příště, pip ho vezme z cache namísto stažení ze sítě.
**Obsah**: Komprimované `.whl` soubory (zipping balíčků).
=== 2. Instalace do projektu (~100 MB – 2 GB) ===
~/projekty/muj-projekt/venv/lib/python3.x/site-packages/
Tady žijí rozpakované balíčky, které projekt skutečně používá.
**Obsah**: Skutečný kód knihoven, které potřebuješ.
----
==== Čištění cache a uvolnění místa ====
=== Vyčisti pip cache ===
Cache si můžeš bezpečně vyčistit – nic se nerozbije:
pip cache purge
Nebo ručně:
rm -rf ~/.cache/pip/
**Co se stane?**
* ✅ Uvolníš 500 MB – 2 GB místa
* ✅ Virtuální prostředí zůstane intaktní
* ❌ Příští instalace bude pomalejší (pip musí stáhnout znovu)
=== Vyčisti komplexní projekt ===
Pokud máš více projektů a chceš uvolnit všechno:
# 1. Smaž jednotlivé projekty
rm -rf ~/projekty/projekt1/
rm -rf ~/projekty/projekt2/
# 2. Vyčisti cache
pip cache purge
----
==== Pokročilé: Uložení seznamu balíčků ====
Pokud chceš, aby si někdo jiný snadno zkopíroval tvůj projekt se stejnými verzemi:
=== Vytvoř seznam závislostí ===
pip freeze > requirements.txt
Soubor `requirements.txt` obsahuje seznam všech balíčků a jejich verzí:
numpy==1.24.3
pandas==2.0.2
requests==2.31.0
=== Spolupracovník si projekt zkopíruje ===
git clone projekt
cd projekt
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Všechny balíčky v přesných verzích se nainstalují automaticky.
----
==== Tipy a triky ====
=== Aliasy pro usnadnění ===
Do souboru `~/.bashrc` nebo `~/.zshrc` si můžeš přidat aliasy:
alias venv_on='source venv/bin/activate'
alias venv_off='deactivate'
alias venv_new='python3 -m venv venv && source venv/bin/activate'
Pak stačí zadat:
venv_on # aktivace
venv_off # deaktivace
=== Kontrola, zda je prostředí aktivní ===
Pokud si nejsi jistý, zda je virtuální prostředí aktivní, podívej se na prompt:
* **Aktivní**: `(venv) uživatel@počítač:...`
* **Neaktivní**: `uživatel@počítač:...`
=== Více projektů vedle sebe ===
Můžeš mít tolik projektů, kolik chceš. Každý má své vlastní virtuální prostředí:
~/projekty/
├── projekt1/
│ └── venv/
├── projekt2/
│ └── venv/
└── projekt3/
└── venv/
Když přepínáš mezi projekty, aktivuj jejich prostředí:
deactivate # vypni staré
cd ~/projekty/projekt2
source venv/bin/activate # zapni nové
----
==== Shrnutí: Checklist pro nový projekt ====
- ✅ `mkdir ~/projekty/novy-projekt && cd ~/projekty/novy-projekt`
- ✅ `python3 -m venv venv`
- ✅ `source venv/bin/activate`
- ✅ `pip install --upgrade pip`
- ✅ `pip install balicek1 balicek2 balicek3`
- ✅ Pracuj na svém kódu
- ✅ `deactivate` (když skončíš)
**Pro smazání:** `rm -rf ~/projekty/novy-projekt/`
----
==== Řešení problémů ====
**Otázka**: Co když si nejsem jistý, co je kde nainstalováno?\\
**Odpověď**: Spusť `pip list` v aktivním virtuálním prostředí. Vidíš jen balíčky toho konkrétního projektu.
**Otázka**: Zabírá to hodně místa?\\
**Odpověď**: Typicky 100 MB – 2 GB na projekt, podle počtu balíčků. Všechno je ale v jedné složce a snadno se to smaže.
**Otázka**: Mohu mít více verzí Pythonu?\\
**Odpověď**: Ano. Každé virtuální prostředí může být postaveno na jiné verzi Pythonu, pokud je máš nainstalovanou:
python3.9 -m venv venv
python3.11 -m venv venv
----
===== Aktualizace balíků instalované pip =====
Dle [[https://www.root.cz/zpravicky/jak-aktualizovat-baliky-instalovane-pip/|tohoto článku]] je poněkud problém s aktualizací balíčků nainstalovaných pomocí Pip (package installer for Python). Je možné ručně vynutit aktualizaci explicitně vyjmenovaných balíčků, například:
pip install --upgrade pip setuptools wheel
Všechny nainstalované jednoduše ale nejde. Řešením je použití vlastního skriptu:
pip freeze --user | cut -d'=' -f1 | xargs pip install --upgrade --user -U
Anebo je možné použít například balíček [[https://pypi.org/project/pipupgrade/|pipupgrade]] či [[https://pypi.org/project/pip-review/|pip-review]]. V prvním případě se aktualizuje triviálně //pipugrade//, v druhém případě //pip-review --local --auto//.
Nebo se nabízí plošná aktualizace pro nějaký projekt pomocí:
python3 -m pip install -r requirements.txt