Bilaabida Jupyter-ka ee ku socda LXD orbit

Weligaa miyaad tijaabisay koodhka ama nidaamyada nidaamka Linux si aadan uga welwelin nidaamka aasaasiga ah oo aadan wax walba u dumin haddii ay dhacdo qalad koodka kaas oo la socon kara mudnaanta xididka?

Laakiin ka waran xaqiiqda ah in aan nidhaahno waxaad u baahan tahay inaad tijaabiso ama ku socodsiiso koox dhan oo adeegyo yar yar oo kala duwan hal mashiin? boqol ama xataa kun?

Mashiinnada farsamada gacanta ee uu maamulo hypervisor, dhibaatooyinkan oo kale waa la xallin karaa waana la xallin doonaa, laakiin waa maxay qiimaha? Tusaale ahaan, weel ku jira LXD oo ku salaysan qaybinta Alpine Linux waxa uu cunaa oo keliya 7.60MB RAM, iyo meesha qaybta xididku ay ku jirto bilawga ka dib 9.5MB! Sidee u jeceshahay taas, Elon Musk? Waxaan ku talinayaa inaad hubiso Awoodaha aasaasiga ah ee LXD - nidaamka weelka ee Linux

Ka dib markii ay caddaatay guud ahaan waxa weelasha LXD yihiin, aan sii socono oo aan ka fikirno, ka waran haddii ay jirto goob gooseyaal ah oo aad si badbaado leh ugu socodsiin karto koodka martida loo yahay, u soo saari karto garaafyo, si firfircoon (is dhexgal ah) ugu xidhid UI widgets koodkaaga, koodhka ku kabo qoraal leh blackjack... qaabaynta? Nooc ka mid ah baloog is-dhexgal ah? Wow... waan rabaa! raba! πŸ™‚

Ka fiirso bisadda hoosteeda meesha aan ku ridno weel jupyter shaybaar - jiilka soo socda ee interface interface halkii Jupyter Notebook ee duugoobay, waxaan sidoo kale rakibi doonaa modules Python sida bararsan, Baandooyinka, matplotlib, IPyWidgets kaas oo kuu ogolaanaya inaad sameyso wax kasta oo kor ku xusan oo aad ku kaydiso dhammaan fayl gaar ah - IPython laptop.

Bilaabida Jupyter-ka ee ku socda LXD orbit

Qorshaha ka-qaadista Orbital ^

Bilaabida Jupyter-ka ee ku socda LXD orbit

Aan dulmarno qorshe hawleed kooban si ay noogu fududaato fulinta qorshaha kore:

  • Aynu rakibno oo soo saarno weel ku salaysan qalabka qaybinta Alpine Linux. Waxaan u isticmaali doonaa qaybintan sababtoo ah waxaa loogu talagalay minimalism waxayna ku rakibi doontaa oo kaliya software-ka ugu muhiimsan ee ku jira, ma jiraan wax ka sarreeya.
  • Aynu kudarno saxan kale oo macmal ah oo ku jira weelka oo aan siino magac - hostfs oo ku dheji nidaamka faylka xididka. Saxankani waxa uu suurtogal ka dhigayaa in la isticmaalo faylalka ku jira martigeliyaha ee hagaha la siiyay ee ku jira weelka dhexdiisa. Sidaas awgeed, xogtayadu waxay noqon doontaa mid ka madax bannaan weelka. Haddii weelka la tirtiro, xogtu waxay ku sii jiri doontaa martigeliyaha. Sidoo kale, nidaamkani waxa uu faa'iido u leeyahay in la wadaago xog isku mid ah inta u dhaxaysa weel badan iyada oo aan la isticmaalin hababka shabakada caadiga ah ee qaybinta weelka.
  • Aynu rakibno Bash, sudo, maktabadaha lagama maarmaanka ah, ku dar oo habee isticmaale nidaamka
  • Aan rakibno Python, modules oo aan u ururino ku tiirsanaanta binary iyaga
  • Aynu rakibno oo bilowno jupyter shaybaar, habayso muuqaalka, ku dheji kordhinta.

Maqaalkan waxaan ku bilaabi doonaa furitaanka weelka, ma tixgelin doono rakibidda iyo habeynta LXD, waxaad ka heli kartaa waxaas oo dhan maqaal kale - Astaamaha aasaasiga ah ee LXD - nidaamyada weelka Linux.

Rakibaadda iyo qaabeynta nidaamka aasaasiga ah ^

Waxaan abuurnaa weel leh amarka kaas oo aan ku qeexeyno sawirka - alpine3, aqoonsiga weelka - jupyterlab iyo, haddii loo baahdo, qaabeynta profiles:

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

Halkan waxaan isticmaalayaa profile qaabeynta hddroot kaas oo qeexaya in la abuuro weel leh qayb xidid Barkadda Kaydinta ku yaal saxan HDD jireed:

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

Tani waxay i siinaysaa fursad aan ku tijaabiyo weelasha ku jira diskka HDD, badbaadinta agabka diskka SSD, kaas oo sidoo kale laga heli karo nidaamkayga πŸ™‚ kaas oo aan u sameeyay qaabaynta qaabeynta gaar ssdroot.

Kadib marka weelka la sameeyo, waxay ku taal gobolka STOPPED, marka waxaan u baahanahay inaan ku bilowno annagoo ku socodsiina nidaamka init ee ku jira:

lxc start jupyterlab

Aan soo bandhigno liiska weelasha LXD annagoo adeegsanayna furaha -c taasoo tilmaamaysa cOlumns soo bandhigay:

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

Marka la abuurayo weelka, cinwaanka IP-ga waxaa loo doortay si aan kala sooc lahayn, maadaama aan isticmaalnay astaanta qaabeynta default kaas oo hore loogu habeeyey maqaalka Astaamaha aasaasiga ah ee LXD - nidaamyada weelka Linux.

Waxaan u bedeli doonaa cinwaanka IP-ga mid aad loo xasuusan karo annagoo abuuraya is-dhexgal shabakadeed oo heer weel ah, oo ma aha heerka qaabeynta qaabeynta sida hadda ku jirta qaabeynta hadda. Uma baahnid inaad tan sameyso, waad ka boodi kartaa.

Abuuritaanka is-dhexgal shabakadeed eth0 Kaas oo aan ku xidhno furaha (buundada shabakadda) lxdbr0 kaas oo aan awoodnay NAT sida ku cad maqaalkii hore iyo weelku hadda wuxuu heli doonaa internetka, sidoo kale waxaan ku dhejineynaa ciwaanka IP-ga ah ee isdhexgalka - 10.0.5.5:

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

Ka dib marka lagu daro qalabka, weelka waa in dib loo kiciyaa:

lxc restart jupyterlab

Hubinta xaaladda weelka:

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

Ku rakibida software aasaasiga ah iyo dejinta nidaamka ^

Si aad u maamusho weelkayaga, waxaad u baahan tahay inaad ku rakibto software-ka soo socda:

Xidhmada
Description

bash
GNU Bourne Again qolof

bash-dhameystir
Dhamaystirka barnaamijka ee qolofka bashka

sudo
Sii isticmaalayaasha qaarkood awood ay ku socodsiiyaan amarrada qaar xidid ahaan

hooskii
Koontada sirta ah iyo qalabka maaraynta akoontiga oo taageero u ah faylalka hadhka iyo PAM

tzdata
Ilaha aagga wakhtiga iyo xogta wakhtiga kaydinta iftiinka maalinta

nano
Pico editor clone oo leh horumarin

Intaa waxaa dheer, waxaad ku rakibi kartaa taageerada bogga man-boggaga adoo ku rakibaya xirmooyinka soo socda - man man-pages mdocml-apropos less

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

Aynu eegno amarrada iyo furayaasha aan isticmaalnay:

  • lxc - Wac macmiilka LXD
  • exec - Habka macmiilka LXD kaas oo maamula amarka ku jira weelka
  • jupyterlab - Aqoonsiga weelka
  • -- - Fure gaar ah oo qeexaya in aan loo fasirin furayaal dheeraad ah furayaasha lxc oo u gudbi xadhigga intiisa kale sida weelka
  • apk - Maareeyaha xirmada qaybinta Alpine Linux
  • add - Habka maamulaha xirmo ee rakibaya baakadaha la cayimay ka dib amarka

Marka xigta, waxaan dejin doonaa aagga waqtiga ee nidaamka Europe/Moscow:

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

Ka dib markii la rakibo aagga wakhtiga, xirmada tzdata Looma baahna nidaamka, waxay qaadan doontaa meel bannaan, markaa aynu tirtirno:

lxc exec jupyterlab -- apk del tzdata

Hubinta aagga wakhtiga:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Si aanad wakhti badan ugu bixin samaynta Bash ee isticmaalayaasha cusub ee weelka, tillaabooyinka soo socda waxaan koobi doonan doonaa faylasha skel ee diyaarsan ee nidaamka martida loo yahay. Tani waxay kuu ogolaan doontaa inaad ku qurxiso Bash weel si is dhexgal ah. Nidaamka martigeliyahaygu waa Manjaro Linux iyo faylasha la koobiyeeyay /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors Mabda 'ahaan waxay ku habboon yihiin Alpine Linux oo ma keenaan dhibaatooyin halis ah, laakiin waxaa laga yaabaa inaad haysato qayb ka duwan oo aad u baahan tahay inaad si madax-bannaan u ogaato haddii uu jiro qalad markaad ku dhex socoto Bash weelka.

Ku koobbi faylasha qalfoofka weelka. Furaha --create-dirs wuxuu abuuri doonaa tusmooyinka lagama maarmaanka ah haddii aysan jirin:

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

Isticmaalaha xididka ee jira, koobiyi galalka skel ee hadda lagu koobiyeeyay weelka hagaha guriga:

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

Alpine Linux waxay u rakibtaa qolof nidaamka isticmaalayaasha /bin/sh, waxaan ku bedeli doonaa root isticmaala Bash:

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

in root Isticmaaluhu ma ahayn furaha sirta ah, wuxuu u baahan yahay inuu dejiyo erayga sirta ah. Amarka soo socda ayaa soo saari doona oo u dejin doona erayga sirta ah ee cusub, kaas oo aad ku arki doonto shaashadda console ka dib marka la fuliyo:

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

Sidoo kale, aynu abuurno isticmaale nidaam cusub - jupyter kaas oo aan hadhow u habayn doono jupyter shaybaar:

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

Aynu abuurno oo u dhigno furaha sirta ah:

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

Marka xigta, waxaan fulin doonaa laba amar, kan ugu horreeya wuxuu abuuri doonaa koox nidaam sudo, kan labaadna wuxuu ku dari doonaa isticmaale jupyter:

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

Aynu aragno kooxaha isticmaaluhu ka tirsan yahay jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Wax walba waa caadi, aan horay u socono.

Oggolow dhammaan isticmaalayaasha xubnaha ka ah kooxda sudo adeegso amarka sudo. Si tan loo sameeyo, orod qoraalka soo socda, halkee sed waxay ka xun tahay xariiqda cabbirka ee faylka qaabeynta /etc/sudoers:

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

Ku rakibida iyo habaynta JupyterLab ^

jupyter shaybaar waa Python app, markaa waa in aan marka hore rakibno turjumaankan. Sidoo kale, jupyter shaybaar waxaanu ku rakibi doonaa anagoo adeegsanayna maareeyaha xirmada Python pip, oo aan ahayn nidaamka mid, sababtoo ah waxaa laga yaabaa in laga yaabo in ay duugowday kaydka nidaamka, sidaas darteed, waa inaan gacanta ku xallinaa ku tiirsanaanta iyada oo la rakibayo xirmooyinka soo socda - python3 python3-dev gcc libc-dev zeromq-dev:

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

Aynu cusboonaysiinno cutubyada Python iyo maamulaha xirmada pip ilaa nooca hadda:

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

Ku rakib jupyter shaybaar iyada oo loo marayo maareeyaha xirmada pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Tan iyo markii la kordhiyey in jupyter shaybaar waa tijaabo oo si rasmi ah looguma soo rarin xirmada jupyterlab, markaa waa inaan ku rakibno oo u habeynaa gacanta.

Aan u rakibno NodeJS iyo maamulaha xirmada - NPM, tan iyo jupyter shaybaar waxay u isticmaashaa kordhinteeda:

lxc exec jupyterlab -- apk add nodejs npm

Si loo kordhiyo jupyter shaybaar kaas oo aanu ku rakibi doono shaqaynay, waxay u baahan yihiin in lagu rakibo tusaha isticmaalaha tan iyo markii codsiga laga bilaabi doono isticmaalaha jupyter. Dhibaatadu waxay tahay in aanay jirin halbeeg ku jira amarka bilawga ah oo loo gudbin karo hagaha; codsigu waxa uu aqbalaa oo kaliya doorsoomayaasha deegaanka sidaas darteed waa in aan qeexno. Si tan loo sameeyo, waxaanu qori doonaa amarka dhoofinta doorsoomaha JUPYTERLAB_DIR deegaanka isticmaalaha jupyter, si loo xareeyo .bashrckaas oo la fuliyo mar kasta oo isticmaaluhu soo galo:

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

Amarka soo socda ayaa rakibi doona kordhin gaar ah - maareeyaha kordhinta gudaha jupyter shaybaar:

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

Hadda wax walba waxay diyaar u yihiin bilaabista koowaad jupyter shaybaar, laakiin waxaan wali ku rakibi karnaa dhowr kordhin oo faa'iido leh:

  • toc - Tusmada Tusmada, waxay soo saartaa liiska cinwaannada maqaal/buug xusuus qor ah
  • jupyterlab-horizon-theme - dulucda UI
  • jupyterlab_neon_theme - dulucda UI
  • jupyterlab-ubu-theme - Mid kale dulucda qoraaga Maqaalkani :) Laakiin kiiskan, ku rakibida kaydka GitHub ayaa la tusi doonaa

Markaa, u socodsii amarada soo socda si isku xigta si aad u rakibto kordhintan:

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"

Ka dib marka la rakibo kordhinta, waa inaan soo ururinnaa iyaga, tan iyo markii hore, inta lagu jiro rakibidda, waxaan qeexnay furaha --no-build si loo badbaadiyo waqtiga. Hadda waxaan si weyn u dedejin doonnaa innagoo isku wada ururinayna hal mar:

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

Hadda wad labada amar ee soo socda si aad u socodsiiso markii ugu horeysay jupyter shaybaar. Waxaa suurtagal ah in lagu bilaabo hal amar, laakiin kiiskan, amarka furitaanka, oo ay adag tahay in lagu xasuusto maskaxdaada, waxaa lagu xasuusan doonaa bash ku jira weelka, oo aan ku jirin martigeliyaha, halkaas oo ay jiraan amarro ku filan. in taariikhda lagu qoro :)

Soo gal weelka isticmaale ahaan jupyter:

lxc exec jupyterlab -- su -l jupyter

Marka xigta, orod jupyter shaybaar oo leh furayaal iyo xuduudo sida lagu tilmaamay:

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

Tag ciwaanka ku jira biraawsarkaaga http://10.0.5.5:8888 oo bogga furmo geli Calaamad gelid oo aad ku arki doonto console-ka Nuqul ka samee oo ku dheji bogga, ka dibna dhagsii login. Ka dib markaad gasho, u gudub menu-ka kordhinta ee bidixda, sida ku cad sawirka hoose, halkaas oo lagugu soo jeedin doono, marka aad dhaqaajiso maamulaha kordhinta, inaad qaadato khataraha amniga adigoo ku rakibaya kordhinta qolo saddexaad oo amarku leeyahay. Horumarinta JupyterLab masuul kama aha:

Bilaabida Jupyter-ka ee ku socda LXD orbit

Si kastaba ha ahaatee, waxaan go'doomineynaa dhammaan jupyter shaybaar oo ku rid weel si qolo saddexaad oo kordhin u baahan oo adeegsata NodeJS aysan ugu yaraan xadi karin xogta saxanka marka laga reebo kuwa aan ku furno gudaha weelka. U hel dukumeentigaaga khaaska ah ee martida loo yahay /home Nidaamyada ka yimaada weelka uma badna inay guuleystaan, iyo haddii ay sameeyaan, markaa waxaad u baahan tahay inaad mudnaanta ku yeelato faylasha nidaamka martida loo yahay, maadaama aan ku wadno weelka gudaha hab aan mudnayn. Iyada oo ku saleysan macluumaadkan, waxaad qiimeyn kartaa halista ku darida kordhinta jupyter shaybaar.

Waxa la sameeyay buugaagta xusuusta ee IPython (bogagga gudaha jupyter shaybaar) hadda waxaa lagu abuuri doonaa tusaha guriga isticmaalaha - /home/jupyter, laakiin qorshayaashayadu waa in aan kala qaybsano xogta ( wadaagno) inta u dhaxaysa martigeliyaha iyo weelka, markaa ku soo celi console oo joojiso jupyter shaybaar adoo fulinaya hotkey- CTRL+C iyo ka jawaabista y marka la codsado. Kadib jooji kulanka isdhexgalka ee isticmaalaha jupyter buuxinta furaha CTRL+D.

La wadaaga xogta martigeliyaha ^

Si aad xogta ula wadaagto martigeliyaha, waxaad u baahan tahay inaad ku dhex abuurto qalab ku jira weelka kaas oo kuu ogolaanaya inaad tan sameyso oo aad tan sameyso, socodsii amarka soo socda halkaasoo aan ku cadeynayno furayaasha soo socda:

  • lxc config device add - Amarka wuxuu ku darayaa qaabeynta qalabka
  • jupyter - Aqoonsiga weelka kaas oo qaabaynta lagu daray
  • hostfs - Aqoonsiga aaladda. Waxaad samayn kartaa magac kasta.
  • disk - Nooca qalabka ayaa la tilmaamay
  • path - Waxay qeexaysaa jidka weelka ku jira ee LXD ku dhejin doono qalabkan
  • source - Sheeg isha, dariiqa loo maro hagaha martigeliyaha ee aad rabto inaad la wadaagto weelka. U qeex jidka sida aad doorbidayso
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Loogu talagalay buug-yaraha /home/dv/projects/ipython-notebooks oggolaanshaha waa in la dejiyaa isticmaalaha weelka kaas oo hadda haysta UID la mid ah SubUID + UID, eeg cutubka Badbaadada Mudnaanta Koonteenarada ee maqaalka Astaamaha aasaasiga ah ee LXD - nidaamyada weelka Linux.

Deji ogolaanshaha martigeliyaha, halka mulkiiluhu uu noqon doono isticmaale weelka jupyter, iyo doorsoomayaasha $USER waxay ku qeexi doontaa isticmaalehaaga martida loo yahay koox ahaan:

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

Hello, Adduunka! ^

Haddii aad weli haysato fadhiga konsole ku fur weelka oo leh jupyter shaybaar, ka dibna ku bilow fur cusub --notebook-dir adoo dejinaya qiimaha /mnt/hostfs Sida dariiqa xididka laptop-yada ee weelka loogu talagalay aaladda aan ku abuurnay tallaabadii hore:

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

Kadib tag bogga http://10.0.5.5:8888 oo samee laptop-kaaga ugu horreeya adiga oo gujinaya badhanka bogga sida ka muuqda sawirka hoose:

Bilaabida Jupyter-ka ee ku socda LXD orbit

Kadibna, goobta ku taal bogga, geli koodka Python kaas oo muujin doona classic Hello World!. Marka aad dhammayso gelista, taabo CTRL+ENTER ama badhanka "ciyaaraha" ee ku yaala qalabka ugu sarreeya si uu JupyterLab u sameeyo tan:

Bilaabida Jupyter-ka ee ku socda LXD orbit

Halkaa marka ay marayso, ku dhawaad ​​wax walba waa diyaar in la isticmaalo, laakiin waxa ay noqon doontaa mid aan xiiso lahayn haddii aynaan rakibin modules Python dheeraad ah (codsiyada buuxa) oo si weyn u ballaarin kara awoodaha caadiga ah ee Python in jupyter shaybaar, haddaba, aan sii wadno :)

PS Waxa xiisaha lihi waa in fulintii hore jupyter hoostiisa magaca code Jupyter notebook ma tagin oo waxa ay barbar socotaa jupyter shaybaar. Si aad ugu beddesho noocii hore, raac xidhiidhka ku darida daba-galka ciwaanka/tree, iyo u gudubka nooca cusub waxaa lagu fuliyaa daba-galka /lab, laakiin maaha in la cayimo:

Kordhinta awoodaha Python ^

Qaybtan, waxaan ku rakibi doonaa cutubyada luqadaha Python ee xoogga badan sida bararsan, Baandooyinka, matplotlib, IPyWidgets Natiijooyinka kuwaas oo lagu daray laptops jupyter shaybaar.

Kahor intaadan rakibin cutubyada Python ee liiska ku jira iyada oo loo marayo maareeyaha xirmada pip Waa inaan marka hore xallino ku tiirsanaanta nidaamka ee Alpine Linux:

  • g++ - Loo baahan yahay in la ururiyo modules, maadaama qaarkood iyaga ka mid ah lagu hirgeliyay luqadda C ++ oo ku xidh Python wakhtiga runtime sida modules binary
  • freetype-dev - ku tiirsanaanta moduleka Python matplotlib

Ku-tiirsanaanta rakibidda:

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

Waxaa jira hal dhibaato: Xaaladda hadda jirta ee qaybinta Alpine Linux, suurtagal ma noqon doonto in la ururiyo nooca cusub ee NumPy; khalad ururin ayaa u muuqan doona mid aanan xallin karin:

LADAAD: Ma dhisi karo taayirrada nambarada isticmaala PEP 517 oo aan si toos ah loo rakibin

Sidaa darteed, waxaanu ku rakibi doonaa cutubkan sidii xidhmo nidaam ah oo qaybiya nooc mar hore la soo ururiyey, laakiin in yar ka weyn waxa hadda laga heli karo goobta:

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

Marka xigta, ku rakib modules Python iyada oo loo marayo maareeyaha xirmada pip. Fadlan samir maadaama cutubyada qaarkood ay ururin doonaan oo laga yaabo inay qaataan dhowr daqiiqo. Mashiinkaygii, isku-dubaridku wuxuu qaatay ~15 daqiiqo:

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

Nadiifinta kaydka rakibaadda:

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

Qaybaha tijaabada ee JupyterLab ^

Haddaad ordayso jupyter shaybaar, dib u bilow si qaybaha cusub ee la rakibay loo hawlgeliyo. Si tan loo sameeyo, fadhiga console, dhagsii CTRL+C meesha aad haysatid orod oo gal y si aad u joojiso codsiga ka dibna dib u bilowdo jupyter shaybaar adigoo riixaya falaarta kore ee kumbuyuutarka si aysan u gelin amarka mar kale iyo ka dib Enter si loo bilaabo:

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

Tag bogga http://10.0.5.5:8888/lab ama dib u cusboonaysii bogga biraawsarkaaga, ka dibna geli koodka soo socda unug cusub oo xusuus qor ah:

%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

Waa inaad heshaa natiijo sida sawirka hoose, halkee IPyWidgets waxa ay soo saartaa curiyaha UI ee bogga kaas oo si isdhexgal leh ula falgala koodhka isha, iyo waliba matplotlib u muuji natiijada koodka qaab sawir ahaan sida garaaf hawleed:

Bilaabida Jupyter-ka ee ku socda LXD orbit

Tusaalayaal badan IPyWidgets waxaad ka heli kartaa casharrada halkan

Maxaa kale? ^

Si wanaagsan loo sameeyay haddii aad joogtey oo aad gaartay dhammaadka maqaalka. Si ula kac ah uma dhajin qoraal diyaarsan dhamaadka maqaalka oo rakibi doona jupyter shaybaar "hal gujis" si aad u dhiirigeliso shaqaalaha :) Laakin adigu naftaada ayaad samayn kartaa, maadaama aad horey u taqaanay sida, adigoo amarrada ku soo ururiyay hal qoraal oo Bash ah :)

Waxaad sidoo kale kartaa:

  • U deji magaca shabakada weelka halkii aad ka isticmaali lahayd cinwaanka IP-ga adigoo ku qoraya mid fudud /etc/hosts oo ku qor ciwaanka browserka http://jupyter.local:8888
  • Ku ciyaar xadka kheyraadka weelka, si aad tan u akhrido cutubka gudaha Awoodaha aasaasiga ah ee LXD ama ka hel macluumaad dheeraad ah goobta horumarinta LXD.
  • Beddel mawduuca:

Bilaabida Jupyter-ka ee ku socda LXD orbit

Iyo wax badan oo dheeraad ah oo aad sameyn karto! Waa intaas. Guul baan kuu rajaynayaa!

UPDATE: 15.04.2020/18/30 XNUMX:XNUMX - Qaladaadka la saxay ee cutubka "Hello, Adduunka!"
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX - Qoraal la saxay oo lagu daray sharraxaadda hawlgelinta maareeyaha kordhinta jupyter shaybaar
Cusbooneysii: 16.04.2020/10/40 XNUMX:XNUMX - Qaladaadka la saxay ee laga helay qoraalka oo waxoogaa isbedelay si ka wanaagsan cutubka "Rakida software aasaasiga ah iyo dejinta nidaamka"

Source: www.habr.com

Add a comment