Ydych chi erioed wedi gorfod arbrofi gyda chod neu gyfleustodau system yn Linux heb boeni am y system sylfaenol a rhwygo popeth i lawr rhag ofn y bydd gwall yn y cod sydd i fod i redeg gyda breintiau gwraidd?
Ond beth am y ffaith y gadewch i ni ddweud bod angen i chi brofi neu redeg clwstwr cyfan o wahanol ficrowasanaethau ar un peiriant? Cant neu hyd yn oed fil?
Gyda pheiriannau rhithwir a reolir gan hypervisor, gellir a bydd problemau o'r fath yn cael eu datrys, ond ar ba gost? Er enghraifft, mae cynhwysydd yn LXD yn seiliedig ar y dosbarthiad Alpine Linux yn bwyta'n unig 7.60MB
RAM, a lle mae'r rhaniad gwraidd yn meddiannu ar ôl cychwyn 9.5MB
! Sut ydych chi'n hoffi hynny, Elon Musk? Rwy'n argymell gwirio allan galluoedd sylfaenol LXD - system cynhwysydd yn Linux
Ar ôl iddi ddod yn amlwg yn gyffredinol beth yw cynwysyddion LXD, gadewch i ni fynd ymhellach a meddwl, beth os oedd platfform cynaeafu o'r fath lle gallech chi redeg cod yn ddiogel ar gyfer y gwesteiwr, cynhyrchu graffiau, cysylltu UI- widgets yn ddeinamig (yn rhyngweithiol) â'ch cod, ychwanegu testun at y cod gyda blackjack... fformatio? Rhyw fath o flog rhyngweithiol? Waw... dwi ei eisiau! Eisiau! 🙂
Edrychwch o dan y gath lle byddwn yn lansio mewn cynhwysydd labordy jupyter - y genhedlaeth nesaf o ryngwyneb defnyddiwr yn lle Llyfr Nodiadau Jupyter hen ffasiwn, a byddwn hefyd yn gosod modiwlau Python fel nympy, pandas, matplotlib, IPyWidgets a fydd yn caniatáu ichi wneud popeth a restrir uchod a chadw'r cyfan mewn ffeil arbennig - gliniadur IPython.
Navigation
- Cynllun esgyn orbitol
- Gosod a chyfluniad y system sylfaenol
- Gosod meddalwedd sylfaenol a gosod y system
- Gosod a ffurfweddu JupyterLab
- Rhannu data gyda'r gwesteiwr
- Helo Byd!
- Ehangu galluoedd Python
- Profi modiwlau yn JupyterLab
- Beth arall?
Cynllun esgyn orbitol ^
Gadewch i ni amlinellu cynllun gweithredu byr i’w gwneud yn haws i ni roi’r cynllun uchod ar waith:
- Gadewch i ni osod a lansio cynhwysydd yn seiliedig ar y pecyn dosbarthu Alpaidd Linux. Byddwn yn defnyddio'r dosbarthiad hwn oherwydd ei fod wedi'i anelu at finimaliaeth a byddwn yn gosod y meddalwedd mwyaf angenrheidiol ynddo yn unig, dim byd diangen.
- Gadewch i ni ychwanegu disg rhithwir ychwanegol yn y cynhwysydd a rhoi enw iddo -
hostfs
a'i osod ar y system ffeiliau gwraidd. Bydd y ddisg hon yn ei gwneud hi'n bosibl defnyddio ffeiliau ar y gwesteiwr o gyfeiriadur penodol y tu mewn i'r cynhwysydd. Felly, bydd ein data yn annibynnol ar y cynhwysydd. Os caiff y cynhwysydd ei ddileu, bydd y data yn aros ar y gwesteiwr. Hefyd, mae'r cynllun hwn yn ddefnyddiol ar gyfer rhannu'r un data rhwng llawer o gynwysyddion heb ddefnyddio mecanweithiau rhwydwaith safonol y dosbarthiad cynhwysydd. - Gadewch i ni osod Bash, sudo, y llyfrgelloedd angenrheidiol, ychwanegu a ffurfweddu defnyddiwr system
- Gadewch i ni osod Python, modiwlau a llunio dibyniaethau deuaidd ar eu cyfer
- Gadewch i ni osod a lansio labordy jupyter, addasu'r ymddangosiad, gosod estyniadau ar ei gyfer.
Yn yr erthygl hon, byddwn yn dechrau gyda lansio'r cynhwysydd, ni fyddwn yn ystyried gosod a ffurfweddu LXD, gallwch ddod o hyd i hyn i gyd mewn erthygl arall - Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.
Gosod a chyfluniad y system sylfaenol ^
Rydyn ni'n creu cynhwysydd gyda'r gorchymyn lle rydyn ni'n nodi'r ddelwedd - alpine3
, dynodwr ar gyfer y cynhwysydd - jupyterlab
ac, os oes angen, proffiliau cyfluniad:
lxc init alpine3 jupyterlab --profile=default --profile=hddroot
Yma rydw i'n defnyddio proffil cyfluniad hddroot
sy'n pennu i greu cynhwysydd gyda rhaniad gwraidd yn Pwll Storio wedi'i leoli ar ddisg HDD corfforol:
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
Mae hyn yn rhoi'r cyfle i mi arbrofi gyda chynwysyddion ar y ddisg HDD, gan arbed adnoddau'r ddisg SSD, sydd hefyd ar gael yn fy system 🙂 yr wyf wedi creu proffil cyfluniad ar wahân ar ei gyfer ssdroot
.
Ar ôl i'r cynhwysydd gael ei greu, mae yn y cyflwr STOPPED
, felly mae angen i ni ei gychwyn trwy redeg y system init ynddo:
lxc start jupyterlab
Gadewch i ni arddangos rhestr o gynwysyddion yn LXD gan ddefnyddio'r allwedd -c
sy'n dynodi pa carddangosiad colofnau:
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+
Wrth greu'r cynhwysydd, dewiswyd y cyfeiriad IP ar hap, oherwydd i ni ddefnyddio proffil cyfluniad default
a gyfluniwyd o'r blaen yn yr erthygl Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.
Byddwn yn newid y cyfeiriad IP hwn i un mwy cofiadwy trwy greu rhyngwyneb rhwydwaith ar lefel y cynhwysydd, ac nid ar lefel y proffil cyfluniad fel y mae ar hyn o bryd yn y ffurfweddiad presennol. Nid oes rhaid i chi wneud hyn, gallwch ei hepgor.
Creu rhyngwyneb rhwydwaith eth0
yr ydym yn cysylltu â'r switsh (pont rhwydwaith) lxdbr0
lle gwnaethom alluogi NAT yn ôl yr erthygl flaenorol a bydd gan y cynhwysydd bellach fynediad i'r Rhyngrwyd, ac rydym hefyd yn aseinio cyfeiriad IP statig i'r rhyngwyneb - 10.0.5.5
:
lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Ar ôl ychwanegu dyfais, rhaid ailgychwyn y cynhwysydd:
lxc restart jupyterlab
Gwirio statws y cynhwysydd:
lxc list -c ns4b
+------------+---------+------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0) | hddpool |
+------------+---------+------------------+--------------+
Gosod meddalwedd sylfaenol a gosod y system ^
I weinyddu ein cynhwysydd, mae angen i chi osod y meddalwedd canlynol:
pecyn
Disgrifiad
bash
Cragen GNU Bourne Again
bash-cwblhau
Cwblhad rhaglenadwy ar gyfer y gragen bash
sudo
Rhowch y gallu i rai defnyddwyr redeg rhai gorchmynion fel gwraidd
cysgod
Cyfres offer rheoli cyfrineiriau a chyfrifon gyda chefnogaeth ar gyfer ffeiliau cysgodol a PAM
tzdata
Ffynonellau ar gyfer parth amser a data amser arbed golau dydd
nano
Clin golygydd Pico gyda gwelliannau
Yn ogystal, gallwch osod cefnogaeth yn nhudalennau dyn y system trwy osod y pecynnau canlynol − man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano
Edrychwn ar y gorchmynion a'r allweddi a ddefnyddiwyd gennym:
lxc
- Ffoniwch gleient LXDexec
- Dull cleient LXD sy'n rhedeg gorchymyn yn y cynhwysyddjupyterlab
— ID Cynhwysydd--
- Allwedd arbennig sy'n nodi peidio â dehongli allweddi pellach fel allweddilxc
a phasio gweddill y llinyn fel sydd i'r cynhwysyddapk
- Rheolwr pecyn dosbarthu Alpaidd Linuxadd
- Dull rheolwr pecyn sy'n gosod pecynnau a nodir ar ôl y gorchymyn
Nesaf, byddwn yn gosod parth amser yn y system Europe/Moscow
:
lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Ar ôl gosod y parth amser, y pecyn tzdata
nad oes ei angen bellach yn y system, bydd yn cymryd lle, felly gadewch i ni ei ddileu:
lxc exec jupyterlab -- apk del tzdata
Gwirio'r parth amser:
lxc exec jupyterlab -- date
Wed Apr 15 10:49:56 MSK 2020
Er mwyn peidio â threulio llawer o amser yn sefydlu Bash ar gyfer defnyddwyr newydd yn y cynhwysydd, yn y camau canlynol byddwn yn copïo ffeiliau skel parod o'r system westeiwr iddo. Bydd hyn yn eich galluogi i harddu Bash mewn cynhwysydd yn rhyngweithiol. Fy system gwesteiwr yw Manjaro Linux a'r ffeiliau sy'n cael eu copïo /etc/skel/.bash_profile
, /etc/skel/.bashrc
, /etc/skel/.dir_colors
mewn egwyddor maent yn addas ar gyfer Alpine Linux ac nid ydynt yn achosi problemau critigol, ond efallai y bydd gennych ddosbarthiad gwahanol ac mae angen i chi ddarganfod yn annibynnol a oes gwall wrth redeg Bash yn y cynhwysydd.
Copïwch y ffeiliau skel i'r cynhwysydd. Allwedd --create-dirs
yn creu'r cyfeiriaduron angenrheidiol os nad ydynt yn bodoli:
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
Ar gyfer defnyddiwr gwraidd presennol, copïwch y ffeiliau skel sydd newydd eu copïo i'r cynhwysydd i'r cyfeiriadur cartref:
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
Mae Alpine Linux yn gosod cragen system ar gyfer defnyddwyr /bin/sh
, byddwn yn ei ddisodli root
defnyddiwr yn Bash:
lxc exec jupyterlab -- usermod --shell=/bin/bash root
Bod root
nid oedd y defnyddiwr heb gyfrinair, mae angen iddo osod cyfrinair. Bydd y gorchymyn canlynol yn cynhyrchu ac yn gosod cyfrinair hap newydd iddo, a welwch ar sgrin y consol ar ôl ei weithredu:
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
Hefyd, gadewch i ni greu defnyddiwr system newydd - jupyter
y byddwn yn ei ffurfweddu yn ddiweddarach labordy jupyter:
lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter
Gadewch i ni gynhyrchu a gosod cyfrinair ar ei gyfer:
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
Nesaf, byddwn yn gweithredu dau orchymyn, bydd y cyntaf yn creu grŵp system sudo
, a bydd yr ail yn ychwanegu defnyddiwr ato jupyter
:
lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter
Gadewch i ni weld pa grwpiau y mae'r defnyddiwr yn perthyn iddynt jupyter
:
lxc exec jupyterlab -- id -Gn jupyter
jupyter sudo
Mae popeth yn iawn, gadewch i ni symud ymlaen.
Caniatáu i bob defnyddiwr sy'n aelod o'r grŵp sudo
defnyddio gorchymyn sudo
. I wneud hyn, rhedeg y sgript ganlynol, lle sed
uncomments y llinell paramedr yn y ffeil ffurfweddu /etc/sudoers
:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"
Gosod a ffurfweddu JupyterLab ^
labordy jupyter yn gymhwysiad Python, felly mae'n rhaid i ni osod y cyfieithydd hwn yn gyntaf. Hefyd, labordy jupyter byddwn yn gosod gan ddefnyddio'r rheolwr pecyn Python pip
, ac nid yr un system, oherwydd gall fod yn hen ffasiwn yn ystorfa'r system ac felly, mae'n rhaid i ni ddatrys y dibyniaethau ar ei gyfer â llaw trwy osod y pecynnau canlynol - python3 python3-dev gcc libc-dev zeromq-dev
:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev
Gadewch i ni ddiweddaru modiwlau python a rheolwr pecyn pip
i'r fersiwn gyfredol:
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel
Gosod labordy jupyter trwy'r rheolwr pecyn pip
:
lxc exec jupyterlab -- python3 -m pip install jupyterlab
Ers yr estyniadau yn labordy jupyter yn arbrofol ac nid ydynt yn cael eu cludo'n swyddogol gyda'r pecyn jupyterlab, felly mae'n rhaid i ni ei osod a'i ffurfweddu â llaw.
Gadewch i ni osod NodeJS a'r rheolwr pecyn ar ei gyfer - NPM, ers hynny labordy jupyter yn eu defnyddio ar gyfer ei estyniadau:
lxc exec jupyterlab -- apk add nodejs npm
I estyniadau ar gyfer labordy jupyter y byddwn yn eu gosod yn gweithio, mae angen eu gosod yn y cyfeiriadur defnyddwyr gan y bydd y cais yn cael ei lansio gan y defnyddiwr jupyter
. Y broblem yw nad oes unrhyw baramedr yn y gorchymyn lansio y gellir ei drosglwyddo i gyfeiriadur; dim ond newidyn amgylchedd y mae'r cais yn ei dderbyn ac felly mae'n rhaid i ni ei ddiffinio. I wneud hyn, byddwn yn ysgrifennu'r gorchymyn allforio newidiol JUPYTERLAB_DIR
yn amgylchedd y defnyddiwr jupyter
, i ffeilio .bashrc
sy'n cael ei weithredu bob tro mae'r defnyddiwr yn mewngofnodi:
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"
Bydd y gorchymyn nesaf yn gosod estyniad arbennig - rheolwr estyniad i mewn labordy jupyter:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"
Nawr mae popeth yn barod ar gyfer y lansiad cyntaf labordy jupyter, ond gallwn osod ychydig o estyniadau defnyddiol o hyd:
toc
— Tabl Cynnwys, yn cynhyrchu rhestr o benawdau mewn erthygl/llyfr nodiadaujupyterlab-horizon-theme
- Thema UIjupyterlab_neon_theme
- Thema UIjupyterlab-ubu-theme
- Un arall thema gan yr awdur yr erthygl hon :) Ond yn yr achos hwn, bydd y gosodiad o ystorfa GitHub yn cael ei ddangos
Felly, rhedwch y gorchmynion canlynol yn olynol i osod yr estyniadau hyn:
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"
Ar ôl gosod yr estyniadau, rhaid inni eu llunio, oherwydd yn flaenorol, yn ystod y gosodiad, fe wnaethom nodi'r allwedd --no-build
i arbed amser. Nawr byddwn yn cyflymu'n sylweddol trwy eu casglu ynghyd ar yr un pryd:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"
Nawr rhedeg y ddau orchymyn canlynol i'w redeg am y tro cyntaf labordy jupyter. Byddai'n bosibl ei lansio gydag un gorchymyn, ond yn yr achos hwn, bydd y gorchymyn lansio, sy'n anodd ei gofio yn eich meddwl, yn cael ei gofio gan bash yn y cynhwysydd, ac nid ar y gwesteiwr, lle mae digon o orchmynion eisoes i'w cofnodi yn yr hanes :)
Mewngofnodwch i'r cynhwysydd fel defnyddiwr jupyter
:
lxc exec jupyterlab -- su -l jupyter
Nesaf, rhedeg labordy jupyter gydag allweddi a pharamedrau fel y nodir:
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser
Ewch i'r cyfeiriad yn eich porwr gwe http://10.0.5.5:8888 ac ar y dudalen sy'n agor ewch i mewn tocyn mynediad a welwch yn y consol. Copïwch a gludwch ef ar y dudalen, yna cliciwch Mewngofnodi. Ar ôl mewngofnodi, ewch i'r ddewislen estyniadau ar y chwith, fel y dangosir yn y ffigur isod, lle byddwch yn cael eich annog, wrth actifadu'r rheolwr estyniad, i gymryd risgiau diogelwch trwy osod estyniadau gan drydydd partïon y mae'r gorchymyn ar eu cyfer. Datblygiad JupyterLab ddim yn gyfrifol:
Fodd bynnag, rydym yn ynysu’r cyfan labordy jupyter a'i roi mewn cynhwysydd fel na all estyniadau trydydd parti sy'n gofyn am ac yn defnyddio NodeJS o leiaf ddwyn data ar y ddisg ac eithrio'r rhai yr ydym yn eu hagor y tu mewn i'r cynhwysydd. Cyrraedd eich dogfennau preifat ar y gwesteiwr yn /home
mae prosesau o'r cynhwysydd yn annhebygol o lwyddo, ac os ydynt, yna mae angen i chi gael breintiau ar ffeiliau ar y system westeiwr, gan ein bod yn rhedeg y cynhwysydd yn modd difreintiedig. Yn seiliedig ar y wybodaeth hon, gallwch asesu'r risg o gynnwys estyniadau i mewn labordy jupyter.
Wedi creu llyfrau nodiadau IPython (tudalennau yn labordy jupyter) nawr yn cael ei greu yng nghyfeirlyfr cartref y defnyddiwr - /home/jupyter
, ond ein cynlluniau yw rhannu'r data (rhannu) rhwng y gwesteiwr a'r cynhwysydd, felly dychwelwch i'r consol a stopiwch labordy jupyter trwy weithredu hotkey - CTRL+C
ac yn ateb y
ar gais. Yna terfynwch sesiwn ryngweithiol y defnyddiwr jupyter
cwblhau hotkey CTRL+D
.
Rhannu data gyda'r gwesteiwr ^
I rannu data gyda'r gwesteiwr, mae angen i chi greu dyfais yn y cynhwysydd sy'n eich galluogi i wneud hyn ac i wneud hyn, rhedeg y gorchymyn canlynol lle rydym yn nodi'r allweddi canlynol:
lxc config device add
- Mae'r gorchymyn yn ychwanegu cyfluniad y ddyfaisjupyter
— ID y cynhwysydd yr ychwanegir y cyfluniad atohostfs
— ID dyfais. Gallwch chi osod unrhyw enw.disk
- Nodir y math o ddyfaispath
— Yn pennu'r llwybr yn y cynhwysydd y bydd LXD yn gosod y ddyfais hon iddosource
- Nodwch y ffynhonnell, y llwybr i'r cyfeiriadur ar y gwesteiwr rydych chi am ei rannu gyda'r cynhwysydd. Nodwch y llwybr yn ôl eich dewisiadau
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks
Ar gyfer y catalog /home/dv/projects/ipython-notebooks
rhaid gosod caniatâd i ddefnyddiwr y cynhwysydd sydd â UID cyfartal i SubUID + UID
, gweler y bennod Diogelwch. Breintiau Cynhwysydd yn yr erthygl Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.
Gosodwch y caniatâd ar y gwesteiwr, a'r perchennog fydd defnyddiwr y cynhwysydd jupyter
, a'r newidyn $USER
yn nodi eich defnyddiwr gwesteiwr fel grŵp:
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks
Helo Byd! ^
Os oes gennych sesiwn consol o hyd agorwch yn y cynhwysydd gyda labordy jupyter, yna ei ailgychwyn gydag allwedd newydd --notebook-dir
trwy osod y gwerth /mnt/hostfs
fel y llwybr at wraidd y gliniaduron yn y cynhwysydd ar gyfer y ddyfais a grëwyd gennym yn y cam blaenorol:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Yna ewch i'r dudalen http://10.0.5.5:8888 a chreu eich gliniadur cyntaf trwy glicio ar y botwm ar y dudalen fel y dangosir yn y llun isod:
Yna, yn y maes ar y dudalen, nodwch y cod Python a fydd yn arddangos y clasurol Hello World!
. Pan fyddwch wedi gorffen mynd i mewn, pwyswch CTRL+ENTER
neu'r botwm "chwarae" ar y bar offer ar y brig i gael JupyterLab i wneud hyn:
Ar y pwynt hwn, mae bron popeth yn barod i'w ddefnyddio, ond bydd yn anniddorol os na fyddwn yn gosod modiwlau Python ychwanegol (cymwysiadau llawn) a all ehangu galluoedd safonol Python yn sylweddol yn labordy jupyter, felly, gadewch i ni symud ymlaen :)
PS Y peth diddorol yw bod y gweithredu hen jupyter dan enw cod Llyfr Nodiadau Jupyter wedi mynd i ffwrdd ac mae'n bodoli ochr yn ochr â labordy jupyter. I newid i'r hen fersiwn, dilynwch y ddolen gan ychwanegu'r ôl-ddodiad yn y cyfeiriad/tree
, ac mae'r newid i fersiwn newydd yn cael ei wneud gyda'r ôl-ddodiad /lab
, ond nid oes rhaid ei nodi:
- Llyfr nodiadau Jupyter - http://10.0.5.5:8888/tree
- Labordy Jupyter - http://10.0.5.5:8888/lab
Ehangu galluoedd Python ^
Yn yr adran hon, byddwn yn gosod modiwlau iaith Python pwerus fel nympy, pandas, matplotlib, IPyWidgets mae'r canlyniadau wedi'u hintegreiddio i liniaduron labordy jupyter.
Cyn gosod y modiwlau Python rhestredig trwy'r rheolwr pecyn pip
rhaid i ni yn gyntaf ddatrys dibyniaethau system yn Alpine Linux:
g++
— Angenrheidiol ar gyfer llunio modiwlau, gan fod rhai ohonynt yn cael eu gweithredu yn yr iaith C + + a chysylltu â Python ar amser rhedeg fel modiwlau deuaiddfreetype-dev
- dibyniaeth ar gyfer modiwl Python matplotlib
Gosod dibyniaethau:
lxc exec jupyterlab -- apk add g++ freetype-dev
Mae un broblem: yng nghyflwr presennol y dosbarthiad Alpine Linux, ni fydd yn bosibl llunio'r fersiwn newydd o NumPy; bydd gwall llunio yn ymddangos na allwn ei ddatrys:
GWALL: Methu adeiladu olwynion ar gyfer numpy sy'n defnyddio PEP 517 ac ni ellir eu gosod yn uniongyrchol
Felly, byddwn yn gosod y modiwl hwn fel pecyn system sy'n dosbarthu fersiwn a luniwyd eisoes, ond ychydig yn hŷn na'r hyn sydd ar gael ar y wefan ar hyn o bryd:
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev
Nesaf, gosodwch fodiwlau Python trwy'r rheolwr pecyn pip
. Byddwch yn amyneddgar gan y bydd rhai modiwlau yn llunio ac efallai y bydd yn cymryd ychydig funudau. Ar fy mheiriant, cymerodd y casgliad ~15 munud:
lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib
Clirio caches gosod:
lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*
Profi modiwlau yn JupyterLab ^
Os ydych yn rhedeg labordy jupyter, ei ailgychwyn fel bod y modiwlau sydd newydd eu gosod yn cael eu gweithredu. I wneud hyn, mewn sesiwn consol, cliciwch CTRL+C
lle mae gennych chi'n rhedeg a mynd i mewn y
i atal cais ac yna dechrau eto labordy jupyter trwy wasgu'r saeth i fyny ar y bysellfwrdd er mwyn peidio â mynd i mewn i'r gorchymyn eto ac yna Enter
i ddechrau:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Ewch i'r dudalen http://10.0.5.5:8888/lab neu adnewyddwch y dudalen yn eich porwr, ac yna rhowch y cod canlynol mewn cell llyfr nodiadau newydd:
%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
Dylech gael canlyniad fel yn y llun isod, ble IPyWidgets yn cynhyrchu elfen UI ar y dudalen sy'n rhyngweithio'n rhyngweithiol â'r cod ffynhonnell, a hefyd matplotlib yn dangos canlyniad y cod ar ffurf llun fel graff ffwythiant:
Llawer o enghreifftiau IPyWidgets gallwch ddod o hyd iddo mewn tiwtorialau yma
Beth arall? ^
Da iawn os arhosoch chi a chyrraedd diwedd yr erthygl. Nid wyf yn fwriadol yn postio sgript parod ar ddiwedd yr erthygl a fyddai'n gosod labordy jupyter mewn “un clic” i annog gweithwyr :) Ond gallwch chi ei wneud eich hun, gan eich bod eisoes yn gwybod sut, ar ôl casglu'r gorchmynion i mewn i un sgript Bash :)
Gallwch hefyd:
- Gosodwch enw rhwydwaith ar gyfer y cynhwysydd yn lle cyfeiriad IP trwy ei ysgrifennu mewn syml
/etc/hosts
a theipiwch y cyfeiriad yn y porwr http://jupyter.local:8888 - Chwarae o gwmpas gyda'r terfyn adnoddau ar gyfer y cynhwysydd, ar gyfer hyn darllenwch y bennod yn galluoedd LXD sylfaenol neu gael mwy o wybodaeth ar wefan datblygwr LXD.
- Newidiwch y thema:
A llawer mwy y gallwch chi ei wneud! Dyna i gyd. Rwy'n dymuno llwyddiant i chi!
DIWEDDARIAD: 15.04.2020/18/30 XNUMX:XNUMX - Gwallau wedi'u cywiro yn y bennod “Helo, Byd!”
DIWEDDARIAD: 16.04.2020/10/00 XNUMX:XNUMX - Testun wedi'i gywiro a'i ychwanegu yn y disgrifiad o actifadu rheolwr estyniad labordy jupyter
DIWEDDARIAD: 16.04.2020/10/40 XNUMX:XNUMX — Gwallau wedi'u cywiro a ddarganfuwyd yn y testun a newid ychydig er gwell y bennod “Gosod meddalwedd sylfaenol a gosod y system”
Ffynhonnell: hab.com