A Jupyter indítása LXD pályára

Kísérleteznie kellett már Linuxon kóddal vagy rendszer-segédprogramokkal anélkül, hogy aggódnia kellett volna az alapul szolgáló rendszer miatt, és mindent le kellett volna bontania, ha a kódban hibás lenne, ha root jogosultságokkal kellene futnia?

De mi van azzal a ténnyel, hogy tegyük fel, hogy egy gépen különféle mikroszolgáltatások egész klaszterét kell tesztelnie vagy futtatnia? Száz vagy akár ezer?

A hypervisor által kezelt virtuális gépekkel az ilyen problémákat meg lehet és meg is oldják, de milyen áron? Például egy LXD-ben az Alpine Linux disztribúción alapuló tároló csak fogyaszt 7.60MB RAM, és ahol a gyökérpartíció elfoglalja az indítást követően 9.5MB! Hogy tetszik ez neked, Elon Musk? Azt javaslom, nézd meg az LXD alapvető képességei – egy konténerrendszer Linuxban

Miután általánosságban kiderült, hogy mik is azok az LXD konténerek, menjünk tovább, és gondoljuk át, mi lenne, ha lenne egy ilyen arató platform, ahol biztonságosan futtathatná a gazdagép kódját, grafikonokat generálhatna, dinamikusan (interaktívan) összekapcsolhatná a felhasználói felület widgeteket a kódjával, kiegészíteni a kódot szöveggel blackjack... formázással? Valami interaktív blog? Wow... akarom! Akar! 🙂

Nézz a macska alá, ahol konténerben indítjuk jupyter labor - az elavult Jupyter Notebook helyett a következő generációs felhasználói felület, valamint Python modulokat is telepítünk, mint pl. numpy, pandák, matplotlib, IPyWidgets amely lehetővé teszi a fent felsorolt ​​​​mindent megtehet, és mindezt elmentheti egy speciális fájlba - egy IPython laptopba.

A Jupyter indítása LXD pályára

Orbitális felszállási terv ^

A Jupyter indítása LXD pályára

Vázoljunk fel egy rövid cselekvési tervet, hogy megkönnyítsük a fenti séma megvalósítását:

  • Telepítsünk és indítsunk el egy konténert az elosztókészlet alapján Alpesi Linux. Azért fogjuk ezt a disztribúciót használni, mert a minimalizmusra törekszik, és csak a legszükségesebb szoftvereket telepíti bele, semmi felesleges.
  • Adjunk hozzá egy további virtuális lemezt a tárolóhoz, és adjunk neki nevet - hostfs és csatolja a gyökér fájlrendszerhez. Ez a lemez lehetővé teszi a tárolóban lévő adott könyvtárból a gazdagépen lévő fájlok használatát. Így adataink függetlenek lesznek a tárolótól. Ha a tárolót törlik, az adatok a gazdagépen maradnak. Ez a séma akkor is hasznos, ha ugyanazokat az adatokat sok tároló között osztja meg a tárolóelosztás szabványos hálózati mechanizmusainak használata nélkül.
  • Telepítsük a Bash-t, a sudo-t, a szükséges könyvtárakat, adjunk hozzá és konfiguráljunk rendszerfelhasználót
  • Telepítsük a Python-t, a modulokat, és fordítsunk bináris függőséget hozzájuk
  • Telepítsük és indítsuk el jupyter labor, testreszabhatja a megjelenést, telepíthet hozzá bővítményeket.

Ebben a cikkben a konténer elindításával kezdjük, az LXD telepítését és konfigurálását nem vesszük figyelembe, mindezt egy másik cikkben találja meg - Az LXD - Linux konténerrendszerek alapvető jellemzői.

Az alaprendszer telepítése és konfigurálása ^

Létrehozunk egy tárolót a paranccsal, amelyben megadjuk a képet - alpine3, a konténer azonosítója - jupyterlab és szükség esetén konfigurációs profilok:

lxc init alpine3 jupyterlab --profile=default --profile=hddroot

Itt egy konfigurációs profilt használok hddroot amely meghatározza egy tároló létrehozását gyökérpartícióval Tároló medence fizikai merevlemezen található:

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []
lxc storage show hddpool

config:
  size: 10GB
  source: /dev/loop1
  volatile.initial_source: /dev/loop1
description: ""
name: hddpool
driver: btrfs
used_by:
- /1.0/images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
- /1.0/profiles/hddroot
status: Created
locations:
- none

Ezzel lehetőségem nyílik kísérletezni a HDD lemezen lévő konténerekkel, megmentve a rendszeremben is elérhető SSD lemez erőforrásait 🙂 amihez külön konfigurációs profilt készítettem ssdroot.

A tároló létrehozása után az állapotba kerül STOPPED, ezért el kell indítanunk az init rendszer futtatásával:

lxc start jupyterlab

Jelenítsük meg a konténerek listáját LXD-ben a gomb segítségével -c amely jelzi, hogy melyik coszlopok megjelenítése:

lxc list -c ns4b
+------------+---------+-------------------+--------------+
|    NAME    |  STATE  |       IPV4        | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool      |
+------------+---------+-------------------+--------------+

A konténer létrehozásakor az IP-címet véletlenszerűen választottuk ki, mivel konfigurációs profilt használtunk default amelyet korábban a cikkben konfiguráltak Az LXD - Linux konténerrendszerek alapvető jellemzői.

Ezt az IP-címet egy emlékezetesebbre változtatjuk úgy, hogy hálózati interfészt hozunk létre a konténer szintjén, és nem a konfigurációs profil szintjén, ahogyan az most az aktuális konfigurációban van. Ezt nem kell megtenned, kihagyhatod.

Hálózati interfész létrehozása eth0 amelyet a kapcsolóhoz kapcsolunk (hálózati híd) lxdbr0 amelyben az előző cikk szerint engedélyeztük a NAT-ot és a konténer ezentúl hozzáfér az internethez, valamint statikus IP címet is rendelünk a felülethez - 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

Az eszköz hozzáadása után a tárolót újra kell indítani:

lxc restart jupyterlab

A tároló állapotának ellenőrzése:

lxc list -c ns4b
+------------+---------+------------------+--------------+
|    NAME    |  STATE  |       IPV4       | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0)  | hddpool      |
+------------+---------+------------------+--------------+

Alapszoftver telepítése és a rendszer beállítása ^

Konténerünk adminisztrálásához telepítenie kell a következő szoftvert:

Csomag
Leírás

horpadás
A GNU Bourne Again shell

bash-befejezés
Programozható kiegészítés a bash shellhez

sudo
Adjon lehetőséget bizonyos felhasználóknak, hogy néhány parancsot rootként futtassanak

árnyék
Jelszó- és fiókkezelő eszközcsomag árnyékfájlok és PAM támogatásával

tzdata
Az időzóna és a nyári időszámítás adatok forrásai

nano
Pico szerkesztő klón fejlesztésekkel

Ezenkívül telepítheti a támogatást a rendszer kézikönyvlapjain a következő csomagok telepítésével - man man-pages mdocml-apropos less

lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano

Nézzük az általunk használt parancsokat és billentyűket:

  • lxc — Hívja az LXD klienst
  • exec - LXD kliens metódus, amely parancsot futtat a tárolóban
  • jupyterlab — Tárolóazonosító
  • -- - Speciális kulcs, amely megadja, hogy a további kulcsokat ne értelmezze a következő kulcsaként lxc és adja át a húr többi részét a tárolónak
  • apk — Alpine Linux disztribúciós csomagkezelő
  • add — Csomagkezelő metódus, amely a parancs után megadott csomagokat telepíti

Ezután beállítunk egy időzónát a rendszerben Europe/Moscow:

lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Az időzóna telepítése után a csomag tzdata már nincs szükség a rendszerben, helyet foglal, ezért töröljük:

lxc exec jupyterlab -- apk del tzdata

Az időzóna ellenőrzése:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Annak érdekében, hogy ne töltsön sok időt a Bash beállításával az új felhasználók számára a tárolóban, a következő lépésekben a kész skel fájlokat átmásoljuk a gazdagép rendszerből. Ez lehetővé teszi, hogy interaktívan szépítse a Bash-t egy tárolóban. A gazdagépem a Manjaro Linux, és a fájlok másolása folyamatban van /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors elvileg alkalmasak az Alpine Linuxra, és nem okoznak kritikus problémákat, de előfordulhat, hogy más disztribúciója van, és önállóan kell kitalálnia, hogy van-e hiba a Bash futtatásakor a tárolóban.

Másolja a skel fájlokat a tárolóba. Kulcs --create-dirs létrehozza a szükséges könyvtárakat, ha nem léteznek:

lxc file push /etc/skel/.bash_profile jupyterlab/etc/skel/.bash_profile --create-dirs
lxc file push /etc/skel/.bashrc jupyterlab/etc/skel/.bashrc
lxc file push /etc/skel/.dir_colors jupyterlab/etc/skel/.dir_colors

Már létező root felhasználó esetén másolja a tárolóba most bemásolt skel fájlokat a kezdőkönyvtárba:

lxc exec jupyterlab -- cp /etc/skel/.bash_profile /root/.bash_profile
lxc exec jupyterlab -- cp /etc/skel/.bashrc /root/.bashrc
lxc exec jupyterlab -- cp /etc/skel/.dir_colors /root/.dir_colors

Az Alpine Linux rendszerhéjat telepít a felhasználók számára /bin/sh, azt helyettesítjük root felhasználó a Bashban:

lxc exec jupyterlab -- usermod --shell=/bin/bash root

Hogy root a felhasználó nem volt jelszó nélküli, jelszót kell beállítania. A következő parancs generál és állít be neki egy új véletlenszerű jelszót, amelyet a végrehajtás után a konzol képernyőjén fog látni:

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "root:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: sFiXEvBswuWA

Ezenkívül hozzunk létre egy új rendszerfelhasználót - jupyter amihez később konfiguráljuk jupyter labor:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

Hozzuk létre és állítsuk be a jelszót:

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "jupyter:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: ZIcbzWrF8tki

Ezután két parancsot hajtunk végre, az első egy rendszercsoportot hoz létre sudo, a második pedig hozzáad egy felhasználót hozzá jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

Nézzük, milyen csoportokba tartozik a felhasználó jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Minden rendben, menjünk tovább.

Engedélyezze az összes olyan felhasználót, aki tagja a csoportnak sudo használja a parancsot sudo. Ehhez futtassa a következő szkriptet, ahol sed törli a paramétersor megjegyzéseit a konfigurációs fájlban /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

A JupyterLab telepítése és konfigurálása ^

jupyter labor Python alkalmazás, ezért először telepítenünk kell ezt az értelmezőt. Is, jupyter labor a Python csomagkezelővel fogjuk telepíteni pip, és nem a rendszer, mert előfordulhat, hogy elavult a rendszer lerakatában, és ezért manuálisan kell feloldanunk a függőségeket a következő csomagok telepítésével - python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

Frissítsük a python modulokat és a csomagkezelőt pip az aktuális verzióhoz:

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

Készlet jupyter labor csomagkezelőn keresztül pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Mivel a bővítmények be jupyter labor kísérleti jellegűek, és hivatalosan nem szállítják a jupyterlab csomaggal, ezért manuálisan kell telepítenünk és konfigurálnunk.

Telepítsük a NodeJS-t és a hozzá tartozó csomagkezelőt - NPM-et, mivel jupyter labor ezeket használja a kiterjesztéséhez:

lxc exec jupyterlab -- apk add nodejs npm

Kiterjesztésekhez a következőhöz jupyter labor amelyeket telepíteni fogunk, működtek, azokat a felhasználói könyvtárba kell telepíteni, mivel az alkalmazás a felhasználótól indul el jupyter. A probléma az, hogy az indítási parancsban nincs olyan paraméter, amelyet át lehetne adni egy könyvtárnak, az alkalmazás csak egy környezeti változót fogad el, ezért azt meg kell határoznunk. Ehhez megírjuk a változó export parancsot JUPYTERLAB_DIR a felhasználó környezetében jupyter, fájlhoz .bashrcamely minden alkalommal lefut, amikor a felhasználó bejelentkezik:

lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"

A következő parancs egy speciális bővítményt telepít - kiterjesztéskezelőt jupyter labor:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"

Most minden készen áll az első indításra jupyter labor, de még telepíthetünk néhány hasznos bővítményt:

  • toc — Tartalomjegyzék, címlistát állít elő egy cikkben/jegyzetfüzetben
  • jupyterlab-horizon-theme - UI téma
  • jupyterlab_neon_theme - UI téma
  • jupyterlab-ubu-theme - Másik téma a szerzőtől ezt a cikket :) De ebben az esetben a GitHub tárolóból való telepítés lesz látható

Tehát futtassa egymás után a következő parancsokat a bővítmények telepítéséhez:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyterlab/toc @mohirio/jupyterlab-horizon-theme @yeebc/jupyterlab_neon_theme"
lxc exec jupyterlab -- su -l jupyter -c "wget -c https://github.com/microcoder/jupyterlab-ubu-theme/archive/master.zip"
lxc exec jupyterlab -- su -l jupyter -c "unzip -q master.zip && rm master.zip"
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build jupyterlab-ubu-theme-master"
lxc exec jupyterlab -- su -l jupyter -c "rm -r jupyterlab-ubu-theme-master"

A bővítmények telepítése után le kell fordítanunk őket, mivel korábban a telepítés során megadtuk a kulcsot --no-build időt spórolni. Most jelentősen felgyorsítjuk, ha egy menetben összeállítjuk őket:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"

Most futtassa a következő két parancsot az első futtatáshoz jupyter labor. Egy paranccsal elindítható lenne, de ebben az esetben a nehezen megjegyezhető indítási parancsot a tárolóban lévő bash fogja megjegyezni, és nem a gazdagépen, ahol már van elég parancs bejegyezni őket a történelembe :)

Felhasználóként jelentkezzen be a tárolóba jupyter:

lxc exec jupyterlab -- su -l jupyter

Következő, fuss jupyter labor a jelzett kulcsokkal és paraméterekkel:

[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser

Nyissa meg a címet a böngészőjében http://10.0.5.5:8888 és a megnyíló oldalon írja be jelképes hozzáférést, amelyet a konzolon fog látni. Másolja ki és illessze be az oldalra, majd kattintson Bejelentkezés. Bejelentkezés után lépjen a bal oldali bővítmények menübe az alábbi ábrán látható módon, ahol a kiterjesztéskezelő aktiválásakor felkérést kap arra, hogy vállaljon biztonsági kockázatot harmadik féltől származó bővítmények telepítésével, amelyekhez a parancsot JupyterLab fejlesztés nem vállal felelősséget:

A Jupyter indítása LXD pályára

Azonban az egészet elkülönítjük jupyter labor és helyezze el egy tárolóba, hogy a NodeJS-t igénylő és használó harmadik féltől származó bővítmények legalább ne lophassanak el más adatokat a lemezen, kivéve azokat, amelyeket a tárolóban megnyitunk. Nyissa meg személyes dokumentumait a gazdagépen /home a tárolóból származó folyamatok valószínűleg nem fognak sikerülni, és ha igen, akkor jogosultságokkal kell rendelkeznie a gazdarendszeren lévő fájlokhoz, mivel a tárolót privilegizált mód. Ezen információk alapján felmérheti a bővítmények felvételének kockázatát jupyter labor.

IPython-jegyzetfüzeteket hozott létre (oldalak in jupyter labor) most létrejön a felhasználó kezdőkönyvtárában - /home/jupyter, de az a terveink, hogy felosztjuk az adatokat (megosztást) a gazdagép és a tároló között, ezért térjünk vissza a konzolhoz és álljunk le jupyter labor a gyorsbillentyű végrehajtásával - CTRL+C és válaszol y kérésre. Ezután fejezze be a felhasználó interaktív munkamenetét jupyter egy gyorsbillentyű kitöltése CTRL+D.

Adatok megosztása a gazdagéppel ^

Az adatok megosztásához a gazdagéppel létre kell hozni egy eszközt a tárolóban, amely lehetővé teszi ezt, és ehhez futtassa a következő parancsot, ahol a következő kulcsokat adjuk meg:

  • lxc config device add — A parancs hozzáadja az eszközkonfigurációt
  • jupyter — Annak a tárolónak az azonosítója, amelyhez a konfigurációt hozzáadták
  • hostfs - Eszköz azonosító. Bármilyen nevet beállíthat.
  • disk — Megjelenik az eszköz típusa
  • path — Megadja azt az elérési utat a tárolóban, amelyhez az LXD csatlakoztatni fogja ezt az eszközt
  • source — Adja meg a forrást, a tárolóval megosztani kívánt gazdagépen található könyvtár elérési útját. Adja meg az útvonalat preferenciái szerint
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

A katalógushoz /home/dv/projects/ipython-notebooks Az engedélyt annak a tárolófelhasználónak kell beállítania, akinek jelenleg egyenlő az UID SubUID + UID, lásd a fejezetet Biztonság. Tárolójogok cikkben Az LXD - Linux konténerrendszerek alapvető jellemzői.

Állítsa be az engedélyt a gazdagépen, ahol a tulajdonos lesz a tároló felhasználója jupyter, és a változó $USER csoportként határozza meg a gazdagép felhasználóját:

sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks

Helló Világ! ^

Ha még mindig nyitva van egy konzolmunkamenet a tárolóban a következővel: jupyter labor, majd indítsa újra egy új kulccsal --notebook-dir az érték beállításával /mnt/hostfs mint az előző lépésben létrehozott eszköz tárolójában lévő laptopok gyökerének elérési útja:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

Ezután lépjen az oldalra http://10.0.5.5:8888 és készítse el első laptopját az oldalon található gombra kattintva az alábbi képen látható módon:

A Jupyter indítása LXD pályára

Ezután az oldalon lévő mezőbe írja be a Python kódot, amely megjeleníti a klasszikust Hello World!. Ha befejezte a bevitelt, nyomja meg a gombot CTRL+ENTER vagy a tetején lévő eszköztár „lejátszás” gombjával, hogy a JupyterLab ezt tegye:

A Jupyter indítása LXD pályára

Ezen a ponton szinte minden készen áll a használatra, de érdektelen lesz, ha nem telepítünk további Python modulokat (teljes értékű alkalmazásokat), amelyek jelentősen bővíthetik a Python szabványos képességeit jupyter laborszóval lépjünk tovább :)

PS Az az érdekes, hogy a régi megvalósítás jupyter kódnév alatt Jupyter Jegyzetfüzet nem tűnt el, és ezzel párhuzamosan létezik jupyter labor. A régi verzióra való váltáshoz kövesse a hivatkozást, és adja hozzá az utótagot a címhez/tree, az új verzióra való áttérés pedig az utótaggal történik /lab, de nem kell megadni:

A Python képességeinek bővítése ^

Ebben a részben olyan hatékony Python nyelvi modulokat fogunk telepíteni, mint numpy, pandák, matplotlib, IPyWidgets amelyek eredményeit laptopokba integrálják jupyter labor.

Mielőtt telepítené a felsorolt ​​Python modulokat a csomagkezelőn keresztül pip először meg kell oldanunk a rendszerfüggőségeket az Alpine Linuxban:

  • g++ — Modulok összeállításához szükséges, mivel ezek egy része a nyelven implementálva van C + + és futásidőben bináris modulokként csatlakozzon a Pythonhoz
  • freetype-dev - függőség a Python modultól matplotlib

Függőségek telepítése:

lxc exec jupyterlab -- apk add g++ freetype-dev

Egy probléma van: az Alpine Linux disztribúció jelenlegi állapotában nem lehet lefordítani a NumPy új verzióját, megjelenik egy fordítási hiba, amelyet nem tudtam megoldani:

ERROR: A PEP 517-et használó, közvetlenül nem szerelhető kerekeket nem lehet tönkretenni

Ezért ezt a modult rendszercsomagként fogjuk telepíteni, amely egy már lefordított verziót terjeszt, de egy kicsit régebbi, mint ami jelenleg elérhető az oldalon:

lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev

Ezután telepítse a Python modulokat a csomagkezelőn keresztül pip. Kérjük, legyen türelemmel, mert egyes modulok összeállnak, és ez néhány percet is igénybe vehet. Az én gépemen az összeállítás ~15 percig tartott:

lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib

Telepítési gyorsítótárak törlése:

lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*

Modulok tesztelése a JupyterLabban ^

Ha futsz jupyter labor, indítsa újra, hogy az újonnan telepített modulok aktiválódjanak. Ehhez egy konzolmunkamenetben kattintson a gombra CTRL+C ahol fut, és lépjen be y a kérés leállításához, majd újraindításához jupyter labor a felfelé mutató nyíl megnyomásával a billentyűzeten, hogy ne írja be újra a parancsot, majd ezután Enter kezdeni:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

Ugrás az oldalra http://10.0.5.5:8888/lab vagy frissítse az oldalt a böngészőben, majd írja be a következő kódot egy új jegyzetfüzet cellába:

%matplotlib inline

from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0), b=(-3, 3, 0.5))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

Az alábbi képen látható eredményt kell kapnia, hol IPyWidgets létrehoz egy felhasználói felület elemet az oldalon, amely interaktívan kölcsönhatásba lép a forráskóddal, és azt is matplotlib a kód eredményét kép formájában, függvénygrafikonként jeleníti meg:

A Jupyter indítása LXD pályára

Sok példa IPyWidgets az oktatóanyagokban megtalálod itt

Mi más? ^

Jól tetted, ha maradtál, és a cikk végére értél. Szándékosan nem tettem fel egy kész szkriptet a cikk végére, ami telepítené jupyter labor "egy kattintással" a dolgozók ösztönzésére :) De ezt megteheted magad is, hiszen már tudod, hogyan kell, miután összegyűjtötted a parancsokat egyetlen Bash szkriptbe :)

Te is:

  • Állítson be egy hálózatnevet a tárolóhoz IP-cím helyett úgy, hogy egyszerűen írja be /etc/hosts és írja be a címet a böngészőbe http://jupyter.local:8888
  • Játsszon a tároló erőforrás-korlátozásával, ehhez olvassa el a fejezetet alapvető LXD képességek vagy szerezzen további információkat az LXD fejlesztői webhelyén.
  • Téma módosítása:

A Jupyter indítása LXD pályára

És még sok minden mást megtehetsz! Ez minden. Sok sikert!

FRISSÍTÉS: 15.04.2020. 18:30 - Hibák javítása a „Hello, World!” fejezetben.
FRISSÍTÉS: 16.04.2020. 10:00 — Javított és hozzáadott szöveg a bővítménykezelő aktiválásának leírásában jupyter labor
FRISSÍTÉS: 16.04.2020. 10:40 — A szövegben talált hibákat javítottuk, és némileg jobbra módosítottuk az „Alapszoftver telepítése és a rendszer beállítása” című fejezetet.

Forrás: will.com

Hozzászólás