První krůčky

Připravená instalace pro tuto výuku

Pro účely tohoto předmětu budeme používat Jupyter Lab, což je v podstatě webové vývojové prostředí (nejen) pro jazyk Python. Umožňuje pracovat jednak v příkazové řádce, jednak v režimu notebooku. Jupyter notebook je interaktivní dokument, který obsahuje kód, výstup z kódu, případně další text, obrázky, matematické rovnice, apod.

Jupyter Lab je na FJFI přístupný pomocí JupyterHub serveru na adrese https://jupyter.fjfi.cvut.cz. Přihlásíte se pomocí vašeho školního účtu.

Po úspěšném přihlášení by se vám mělo zobrazit webové prostředí . Vypadá to nějak takto:

jupyterhub-fjfi-first-time.png

Vyzkoušejte si všechny následující příklady použití Pythonu v Jupyter Labu ❗

Příkazová řádka (terminál)

Pro následující kroky budeme potřebovat příkazovou řádku. V Jupyter Labu se k ní dostanete v okně "Launcher" kliknutím na "Terminal" v sekci "Other":

jupyterlab-new-terminal.png

Měl by se vám otevřít panel s příkazovou řádkou:

jupyterhub-terminal.png

Základní interpret

Python je interpretovaný jazyk. Abychom spustili program, potřebujeme interpret. Tím je standardně program python (python.exe na MS Windows), přesnějí řečeno CPython -- interpret jazyka Python napsaný v C. Pokud ho spustíme, měli bychom vidět přibližně toto:

$ python
Python 3.11.7 (main, Jan 29 2024, 16:03:57) [GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

>>> je začátek vstupního řádku, kam můžeme psát příkazy. Např. "Hello world!" už jsme viděli:

>>> print("Hello world!")
Hello world!

Python interpret ukončíte klávesami ctrl + d nebo příkazem exit().

Takto to vypadá v prostředí Jupyter Lab:

jupyterlab-basic-interpreter.png

IPython -- komfortní práce v příkazové řádce

Téměř nezbytým rozšířením Python interpretru pro interaktivní práci v příkazové řádce je IPython. Ten přidává lepší dokončení pomocí tab klávesy, vyhledávání v historii a další vylepšení. Pojďme ho zkusit, stačí v příkazové řádce napsat ipython:

$ ipython
Python 3.11.7 (main, Jan 29 2024, 16:03:57) [GCC 13.2.1 20230801]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.21.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

A v našem Jupyter Lab:

jupyterlab-ipython.png

Dokončení tab klávesou (tab completion)

Po napsání jednoho nebo více písmen a zmáčknutí tab klávesy se objeví možná dokončení (podle kontextu). Zkuste napsat pr a zmáčknout tab:

In [1]: pr
%%prun      %precision  %profile    %prun       print       property    

Historie

Historii lze procházet pomocí šipek nahoru a dolů. Historii zobrazíme také příkazem hist (úplně správně je to %hist -- viz níže). V historii lze také hledat. Podobně jako u tab klávesy, po napsání několika písmen se po zmáčknutí šipky zobrazují příkazy z historie, které těmito písmeny začínají.

Nápověda

Nápovědu (nejen) k funkcím zobrazíme funkcí help nebo připojením ? za příslušný příkaz:

In [1]:
help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

Triky (magics)

IPython přidává k samotným Python příkazům chytré triky, tzv. magics. Poznáme je podle toho, že začínají %. Jedním takovým trikem je %automagick, který nám umožnil použít hist místo %hist.

In [3]: %automagic?
Type:       Magic function
String Form:<bound method AutoMagics.automagic of <IPython.core.magics.auto.AutoMagics object at 0x234a590>>
Namespace:  IPython internal
File:       /usr/lib/python2.7/site-packages/IPython/core/magics/auto.py
Definition: %automagic(self, parameter_s='')
Docstring:
Make magic functions callable without having to type the initial %.

Without argumentsl toggles on/off (when off, you must call it as
%automagic, of course).  With arguments it sets the value, and you can
use any of (case insensitive):

 - on, 1, True: to activate

 - off, 0, False: to deactivate.

Note that magic functions have lowest priority, so if there's a
variable whose name collides with that of a magic fn, automagic won't
work for that function (you get the variable instead). However, if you
delete the variable (del var), the previously shadowed magic function
becomes visible to automagic again.

První jednoduchý program

(I)Python můžeme s úspěchem používat jako kalkulačku. Zkuste si následující příklady spusti v python (případně ipython) rozhraní:

In [2]:
1 + 8 / 2
Out[2]:
5.0

Trochu složitější výpočet můžeme strukturovat pomocí proměnných. Takto např. vypočítáme obsah lichoběžníku.

In [3]:
a = 3.5
b = 2.1
v = 77e-1
(a + b) * v / 2
Out[3]:
21.56

Případně můžeme vstupy i výsledek vypsat formátovaně:

In [4]:
S = (a + b) * v / 2
print(f"Obsah lichoběžníku {a=}, {b=}, {v=} je: {S=}")
Obsah lichoběžníku a=3.5, b=2.1, v=7.7 je: S=21.56

Virtuální prostředí

Virtuální prostředí v Pythonu je způsob, jak izolovat různé projekty od sebe. Každý projekt může mít své vlastní závislosti na knihovnách, které mohou být různé. Virtuální prostředí nám umožňuje mít různé verze knihoven pro různé projekty.

Pro práci s virtuálními prostředími v Pythonu se používá knihovna venv. Základní kroky jsou

  1. Vytvoření nového virtuálního prostředí příkazem python -m venv <adresář-prostředí>.
  2. Přepnutí do prostředí příkazem source <adresář-prostředí>/bin/activate (na MS Windows je to .\env\Scripts\activate).

Pro lepší orientaci a podrobné vysvětlení si projděte článek Python Virtual Environments: A Primer.

Vytvoření prostředí pro tento kurz

Pro tento kurz si vytvoříme nové prostředí na našem JupyterHub serveru. V příkazové řádce postupně zadejte následující příkazy:

  1. vytvoření nového adresáře python a přepnutí do něj
    mkdir python
    cd python
  2. vytvoření nového virtuálního prostředí v adresáři .venv (.venv je běžná konvence pro pojmenování virtuálních prostředí)
    python -m venv .venv
  3. přepnutí do nově vytvořeného prostředí
    source .venv/bin/activate

Vaše příkazová by poté měla vypadat nějak takto:

(.venv) 0 urbanjak@jupyter:~/python$

(.venv) na začátku řádky značí, že jste v aktivovaném virtuálním prostředí. ~/python je aktuální adresář. Právě v tomto adresáři jsme vytvořili nové virtuální prostředí a budeme do něj ukládat soubory pro tento kurz.

Přepínání do výukového prostředí

Kdykoli se znovu přihlásíte na JupyterHub, nebo si jen spustíte nový terminál, musíte se vždy přepnout do toho správného virtuálního prostředí. To uděláte následujícími příkazy:

cd ~/python
source .venv/bin/activate

Práce s notebooky

Jak už jsme zmínili výše, notebook je interaktivní dokument, který obsahuje buňky s (Python) kódem, výstup z kódu, případně další text, obrázky, apod. Všechny materiály pro tento kurz jsou k dispozici jako Jupyter notebooky.

O práci s notebooky se dozvíte více v článku Jupyter Notebook: An Introduction.

Registrace našeho prostředí v Jupyter Labu

Dříve než začneme pracovat s notebooky, musíme zaregistrovat naše virtuální prostředí jako kernel v Jupyter Labu. Jupyter Lab totiž umožňuje pracovat s notebooky v různých jazycích a prostředích. Aby věděl, jaké kernely má k dispozici, musíme mu je nějakým způsobem nainstalovat. Spusťte následující příkaz (je nutné mít aktivované virtuální prostředí pro tuto výuku!)

python -m ipykernel install --user --name python-fjfi --display-name "Python FJFI vyuka"

Toto stačí provést pouze jednou. Po této registraci bude Jupyter Lab vědět, že má k dispozici kernel Python FJFI vyuka a můžete začít pracovat s notebooky.

První notebook

  1. Nejprve se v Jupyter Lab přepněte do seznamu souborů (ikona 📁 vlevo nahoře). jupyterlab-files.png
  2. Změňte adresář na python (dvouklik). jupyterlab-python-dir.png
  3. Klikněte na modré tlačítko + vlevo nahoře - mělo by se otevřít nové Launcher okno. jupyterlab-new-launcher.png
  4. Klikněte v sekci Notebook na Python FJFI vyuka - měl by se otevřít nový notebook. jupyterlab-new-notebook.png

Pokud se vše povedlo, měli byste mít otevřené okno s novým notebookem, pojmenovaným Untitled.ipynb. Bude to vypadat nějak takto:

jupyterlab-first-notebook.png

První kód v notebooku

  1. Zkuste si do první buňky napsat nějaký kód (např. print("Hello notebook!")) a spustit ho. Kód v buňce spustíte klávesovou zkratkou shift + enter nebo kliknutím na tlačítko ▶.
  2. Přidejte ještě další buňku s nějaký výpočtem a ověřte, že výsledek se zobrazí pod buňkou, aniž bychom použili funkci print.
  3. Přejmenujte si notebook na něco smysluplnějšího pomocí File -> Rename Notebook....

Mohlo by to pak vypadat takto: jupyterlab-prvni-notebook.png

Vlastní instalace

Pro instalaci Pythonu a Jupyter Labu na vlastním počítači doporučujeme použít distribuci Micromamba. Poté dle dokumentace můžete vytvořit nové virtuální prostředí a do něj nainstalovat Jupyter Lab a další baličky potřebné pro tento předmět.

Doporučujeme nejprve si osvojit výše popsaný JupyterHub a poté se teprve pustit do instalace na vlastním počítači.

Komentáře

Comments powered by Disqus