Jupyter Notebooky

Programování v GIS 2

Jan Caha

2026-03-02

Technický základ

  • interaktivní prostředí pro psaní a spouštění kódu
  • umožňuje kombinovat text, kód a výstupy (např. obrázky, tabulky, textové výstupy) v jednom souboru
  • vhodné pro analýzu dat, explorativní programování, prototypování
  • koncept buňky (angl. Cell) - blok, může být text či kód
    • každou buňku lze spustit samostatně
    • notebook si pamatuje svůj stav (např. provedené předchozí operace) do restartu tzv. kernelu
  • soubory s příponou .ipynb (JSON struktura) - reálně ale použitelné jen z IDE

Jak to funguje pod kapotou

  • otevřením notebooku se spustí frontend (editor) a připojí se ke kernelu
  • kernel je samostatný proces (např. Python), který drží proměnné a importy v paměti
  • při spuštění buňky editor pošle kód kernelu a čeká na odpověď
  • kernel vrátí:
    • textový výstup (print, chyby)
    • komplexnější výstup (grafy, HTML tabulky, obrázky)
    • stav vykonání (úspěch/chyba)

Komunikace editoru s kernelem

  • komunikace probíhá přes standardizovaný protokol Jupyter zpráv
  • každá spuštěná buňka má svůj požadavek a odpověď
  • odpověď může přijít po částech (např. průběžný výstup)
  • to umožňuje:
    • zobrazit výstup přesně u konkrétní buňky
    • ladit jen část notebooku bez spuštění všeho

Stav notebooku a pořadí buněk

  • pořadí v souboru nemusí odpovídat pořadí spuštění
  • proto jsou důležité počitadla spuštění (např. In [7])
  • buňka může fungovat jen proto, že používá proměnnou vytvořenou dříve
  • bezpečný postup při finalizaci:
    • restart kernelu
    • Run All od začátku
    • ověřit, že notebook běží bez skrytých závislostí

Co je uvnitř .ipynb

  • čistý JSON soubor
  • obsahuje seznam buněk, metadata a uložené výstupy
  • výstupy mohou výrazně zvětšit velikost souboru (hlavně obrázky)
  • v praxi se hodí:
    • před commitem čistit zbytečné výstupy
    • držet důležitou logiku i v .py modulech (z notebooku nelze funkce importovat)

Instalace a nastavení

  • instalace balíčků ipykernel a jupyter v Conda
  • pro VS Code extenze Jupyter
    • nastavení v settings.json
"notebook.formatOnSave.enabled": true,
"notebook.defaultFormatter": "ms-python.black-formatter",
"notebook.codeActionsOnSave": {
    "source.organizeImports": true,
},

Výhody

  • nemusíme kód spouštět kompletně šetří čas (a trpělivost)
  • vytváříme logické bloky kódu
  • můžeme kód prokládat textem
  • lze debugovat i pouze dílčí buňky (ve VS Code)
  • lze kombinovat s existujícím kódem (balíčky, moduly, funkce)
  • “hraní si” s kódem, testování postupů, přístupů a možností
  • notebook může být cílový stav (např. analýza dat), ale často je to spíš mezistav pro tvorbu komplexnějšího výstupu (skript, program)

Dotazy?