Paglansad sa Jupyter sa LXD Orbit

Nakasulay ka na ba sa pag-eksperimento sa code o system utilities sa Linux nga wala mabalaka bahin sa nagpahiping sistema ug giguba ang tanan kung adunay sayup sa code nga kinahanglan nga modagan nga adunay mga pribilehiyo sa gamut?

Apan komosta ang kamatuoran nga ingnon ta nga kinahanglan nimo nga sulayan o ipadagan ang usa ka tibuuk nga kumpol sa lainlaing mga microservice sa usa ka makina? Usa ka gatos o bisan usa ka libo?

Uban sa mga virtual nga makina nga gidumala sa usa ka hypervisor, ang ingon nga mga problema mahimo ug masulbad, apan sa unsang gasto? Pananglitan, ang usa ka sudlanan sa LXD nga gibase sa pag-apod-apod sa Alpine Linux naggamit lamang 7.60MB RAM, ug diin ang root partition nag-okupar human sa pagsugod 9.5MB! Giunsa nimo gusto kana, Elon Musk? Girekomenda ko ang pagsusi batakang kapabilidad sa LXD - usa ka sudlanan nga sistema sa Linux

Human kini nahimong tin-aw sa kinatibuk-an kon unsa ang LXD nga mga sudlanan, magpadayon kita ug maghunahuna, unsa kaha kung adunay ingon nga harvester nga plataporma diin ikaw luwas nga makadagan sa code alang sa host, makamugna og mga graph, dinamikong (interactive) nga mag-link sa UI- widgets sa imong code, idugang ang code sa teksto nga adunay blackjack... pag-format? Usa ka matang sa interactive nga blog? Wow... gusto nako! Gusto! 🙂

Tan-awa sa ilawom sa iring diin kita maglansad sa usa ka sudlanan jupyter lab - ang sunod nga henerasyon sa user interface imbis sa karaan nga Jupyter Notebook, ug mag-install usab kami mga module sa Python sama sa numpy, Pandas, matplotlib, IPyWidgets nga magtugot kanimo sa pagbuhat sa tanan nga gilista sa ibabaw ug i-save kini tanan sa usa ka espesyal nga file - usa ka IPython laptop.

Paglansad sa Jupyter sa LXD Orbit

Plano sa pagtangtang sa orbital ^

Paglansad sa Jupyter sa LXD Orbit

Atong i-outline ang usa ka mubo nga plano sa aksyon aron mas dali alang kanato ang pagpatuman sa laraw sa ibabaw:

  • Atong i-install ug ilunsad ang usa ka sudlanan nga gibase sa distribution kit Alpine Linux. Gamiton namon kini nga pag-apod-apod tungod kay gitumong kini sa minimalism ug i-install lamang ang labing kinahanglan nga software niini, wala’y sobra.
  • Atong idugang ang usa ka dugang nga virtual disk sa sudlanan ug hatagan kini usa ka ngalan - hostfs ug i-mount kini sa root file system. Kini nga disk magpaposible sa paggamit sa mga file sa host gikan sa gihatag nga direktoryo sulod sa sudlanan. Sa ingon, ang among datos mahimong independente sa sulud. Kung ang sudlanan matangtang, ang datos magpabilin sa host. Usab, kini nga laraw mapuslanon alang sa pagpaambit sa parehas nga datos tali sa daghang mga sudlanan nga wala gigamit ang sukaranan nga mekanismo sa network sa pag-apod-apod sa sulud.
  • Atong i-install ang Bash, sudo, ang gikinahanglan nga mga librarya, idugang ug i-configure ang usa ka user sa sistema
  • Atong i-install ang Python, modules ug i-compile ang binary dependencies alang kanila
  • Atong i-install ug ilunsad jupyter lab, ipasibo ang hitsura, i-install ang mga extension alang niini.

Niini nga artikulo, magsugod kami sa paglansad sa sudlanan, dili namon hunahunaon ang pag-install ug pag-configure sa LXD, makit-an nimo kining tanan sa laing artikulo - Mga sukaranan nga bahin sa LXD - Linux container system.

Pag-instalar ug pag-configure sa sukaranan nga sistema ^

Naghimo kami usa ka sudlanan nga adunay mando diin among gipiho ang imahe - alpine3, identifier para sa sudlanan - jupyterlab ug, kung gikinahanglan, mga profile sa pag-configure:

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

Dinhi naggamit ako usa ka profile sa pag-configure hddroot nga nagtino sa paghimo og usa ka sudlanan nga adunay partition sa gamut Pool sa Pagtipig nahimutang sa pisikal nga HDD disk:

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

Naghatag kini kanako og oportunidad nga mag-eksperimento sa mga sudlanan sa HDD disk, nga makatipig sa mga kahinguhaan sa SSD disk, nga anaa usab sa akong sistema 🙂 diin naghimo ako og lain nga profile sa configuration. ssdroot.

Human mabuhat ang sudlanan, naa na kini sa estado STOPPED, busa kinahanglan natong sugdan kini pinaagi sa pagpadagan sa init nga sistema niini:

lxc start jupyterlab

Atong ipakita ang lista sa mga sudlanan sa LXD gamit ang yawe -c nga nagpaila nga cpagpakita sa olumn:

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

Sa paghimo sa sudlanan, ang IP address gipili nga random, tungod kay gigamit namon ang usa ka profile sa pagsumpo default nga gi-configure kaniadto sa artikulo Mga sukaranan nga bahin sa LXD - Linux container system.

Usbon namo kini nga IP address ngadto sa mas halandumon pinaagi sa paghimo ug network interface sa lebel sa sudlanan, ug dili sa lebel sa configuration profile kay naa na kini karon sa configuration. Dili nimo kinahanglan buhaton kini, mahimo nimo kini laktawan.

Paghimo usa ka interface sa network eth0 nga atong i-link sa switch (network bridge) lxdbr0 diin among gi-enable ang NAT sumala sa miaging artikulo ug ang sudlanan aduna nay access sa Internet, ug nag-assign usab kami og static IP address sa interface - 10.0.5.5:

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

Human makadugang og device, ang sudlanan kinahanglang i-reboot:

lxc restart jupyterlab

Pagsusi sa kahimtang sa sudlanan:

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

Pag-instalar sa batakang software ug pag-set up sa sistema ^

Aron madumala ang among sudlanan, kinahanglan nimo nga i-install ang mosunod nga software:

package
Description

bash
Ang GNU Bourne Again shell

bash-pagkompleto
Programmable nga pagkompleto para sa bash shell

sudo
Hatagi ang pipila ka tiggamit og abilidad sa pagpadagan sa pipila ka mga sugo isip gamut

anino
Password ug account management tool suite nga adunay suporta alang sa shadow files ug PAM

tzdata
Mga tinubdan alang sa time zone ug daylight saving time data

nano
Ang Pico editor clone nga adunay mga pagpaayo

Dugang pa, mahimo nimong i-install ang suporta sa mga panid sa tawo sa sistema pinaagi sa pag-install sa mga mosunud nga pakete − man man-pages mdocml-apropos less

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

Atong tan-awon ang mga sugo ug mga yawe nga atong gigamit:

  • lxc — Tawga ang kliyente sa LXD
  • exec - LXD nga pamaagi sa kliyente nga nagpadagan sa usa ka sugo sa sudlanan
  • jupyterlab — Container ID
  • -- - Usa ka espesyal nga yawe nga nagtino nga dili ihubad ang dugang nga mga yawe ingon mga yawe alang sa lxc ug ipasa ang nahabilin nga hilo sama sa sudlanan
  • apk - Alpine Linux distribution package manager
  • add - Usa ka paagi sa manedyer sa pakete nga nag-install sa mga pakete nga gitakda pagkahuman sa mando

Sunod, magbutang kami usa ka time zone sa sistema Europe/Moscow:

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

Human ma-install ang time zone, ang package tzdata dili na kinahanglan sa sistema, mokuha kini og luna, busa ato kining tangtangon:

lxc exec jupyterlab -- apk del tzdata

Pagsusi sa time zone:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Aron dili mogugol ug daghang oras sa pag-set up sa Bash alang sa mga bag-ong tiggamit sa sudlanan, sa mosunod nga mga lakang atong kopyahon ang andam nga mga skel file gikan sa host system ngadto niini. Kini magtugot kanimo sa pagpatahom sa Bash sa usa ka sudlanan nga interactive. Ang akong host system mao ang Manjaro Linux ug ang mga file nga gikopya /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors sa prinsipyo kini angayan alang sa Alpine Linux ug dili hinungdan sa mga kritikal nga mga problema, apan mahimo ka nga adunay lain nga pag-apod-apod ug kinahanglan nimo nga independente nga mahibal-an kung adunay sayup kung nagdagan ang Bash sa sudlanan.

Kopyaha ang skel files ngadto sa sudlanan. yawe --create-dirs maghimo sa gikinahanglan nga mga direktoryo kung wala sila:

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

Para sa naa na nga root user, kopyaha ang skel files nga bag-o lang gikopya sa sudlanan ngadto sa home directory:

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

Ang Alpine Linux nag-instalar og system shell alang sa mga tiggamit /bin/sh, pulihan namo kini sa root user sa Bash:

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

nga root ang user dili passwordless, kinahanglan siyang magbutang ug password. Ang mosunud nga mando maghimo ug magbutang usa ka bag-ong random nga password alang kaniya, nga imong makita sa screen sa console pagkahuman kini gipatuman:

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

Usab, maghimo kita usa ka bag-ong tiggamit sa sistema - jupyter nga atong i-configure unya jupyter lab:

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

Maghimo kita ug magbutang usa ka password alang niini:

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

Sunod, ipatuman namon ang duha ka mga sugo, ang una maghimo usa ka grupo sa sistema sudo, ug ang ikaduha magdugang ug user niini jupyter:

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

Atong tan-awon kung unsang mga grupo ang nahisakop sa tiggamit jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Okay na ang tanan, padayon ta.

Tugoti ang tanang tiggamit nga miyembro sa grupo sudo gamita ang sugo sudo. Aron mahimo kini, pagdagan ang mosunud nga script, kung diin sed uncomments ang parameter line sa configuration file /etc/sudoers:

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

Pag-instalar ug pag-configure sa JupyterLab ^

jupyter lab usa ka aplikasyon sa Python, mao nga kinahanglan una natong i-install kini nga tighubad. Usab, jupyter lab atong i-install gamit ang Python package manager pip, ug dili ang sistema sa usa, tungod kay kini mahimo nga wala na sa panahon sa sistema sa repository ug busa, kinahanglan naton nga mano-mano nga sulbaron ang mga dependency alang niini pinaagi sa pag-install sa mga mosunud nga mga pakete − python3 python3-dev gcc libc-dev zeromq-dev:

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

Atong i-update ang python modules ug package manager pip sa kasamtangan nga bersyon:

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

Pag-instalar jupyter lab pinaagi sa manager sa package pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Sukad sa mga extension sa jupyter lab mga eksperimento ug dili opisyal nga gipadala uban sa jupyterlab nga pakete, mao nga kinahanglan namon nga i-install ug i-configure kini nga mano-mano.

Atong i-install ang NodeJS ug ang manager sa package alang niini - NPM, sukad jupyter lab gigamit kini alang sa mga extension niini:

lxc exec jupyterlab -- apk add nodejs npm

Sa mga extension para sa jupyter lab nga among i-install nagtrabaho, kinahanglan nila nga ma-install sa direktoryo sa gumagamit tungod kay ang aplikasyon ilansad gikan sa tiggamit jupyter. Ang problema mao nga wala’y parameter sa paglansad nga mando nga mahimong ipasa sa usa ka direktoryo; ang aplikasyon nagdawat ra usa ka variable sa palibot ug busa kinahanglan naton kini ipasabut. Aron mahimo kini, among isulat ang variable export command JUPYTERLAB_DIR sa palibot sa user jupyter, sa pag-file .bashrcnga gipatuman sa matag higayon nga ang user mag-log in:

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

Ang sunod nga sugo mag-instalar sa usa ka espesyal nga extension - extension manager in jupyter lab:

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

Karon ang tanan andam na alang sa unang paglansad jupyter lab, apan mahimo gihapon namo i-install ang pipila ka mapuslanon nga mga extension:

  • toc — Talaan sa mga Sulod, nagmugna ug lista sa mga ulohan sa usa ka artikulo/notebook
  • jupyterlab-horizon-theme - Tema sa UI
  • jupyterlab_neon_theme - Tema sa UI
  • jupyterlab-ubu-theme - Usa pa tema gikan sa tagsulat kini nga artikulo :) Apan sa kini nga kaso, ang pag-install gikan sa GitHub repository ipakita

Busa, pagdagan ang mosunud nga mga mando nga sunud-sunod aron ma-install kini nga mga extension:

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"

Human ma-install ang mga extension, kinahanglan namon nga i-compile kini, tungod kay kaniadto, sa panahon sa pag-install, among gitino ang yawe --no-build aron makadaginot sa panahon. Karon atong mapadali ang kamahinungdanon pinaagi sa pagtipon kanila sa usa ka lakaw:

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

Karon pagdagan ang mosunud nga duha nga mga mando aron ipadagan kini sa unang higayon jupyter lab. Posible nga ilunsad kini sa usa ka sugo, apan sa kini nga kaso, ang paglansad nga sugo, nga lisud hinumdoman sa imong hunahuna, mahinumduman pinaagi sa bash sa sudlanan, ug dili sa host, diin adunay igo nga mga sugo. para irekord sila sa kasaysayan :)

Pag-login sa sudlanan isip usa ka tiggamit jupyter:

lxc exec jupyterlab -- su -l jupyter

Sunod, dagan jupyter lab nga adunay mga yawe ug mga parameter sama sa gipakita:

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

Adto sa adres sa imong web browser http://10.0.5.5:8888 ug sa panid nga nagbukas mosulod token access nga imong makita sa console. Kopyaha ug idikit kini sa panid, dayon i-klik Sulod. Pagkahuman sa pag-log in, adto sa menu sa mga extension sa wala, sama sa gipakita sa numero sa ubos, diin aghaton ka, kung gi-aktibo ang tagdumala sa extension, nga magkuha mga peligro sa seguridad pinaagi sa pag-install sa mga extension gikan sa mga ikatulo nga partido diin ang mando. Pag-uswag sa JupyterLab dili responsable:

Paglansad sa Jupyter sa LXD Orbit

Bisan pa, among gilain ang tibuuk jupyter lab ug ibutang kini sa usa ka sudlanan aron ang mga extension sa ikatulo nga partido nga nanginahanglan ug naggamit sa NodeJS dili labing menos makawat sa datos sa disk gawas sa among giablihan sa sulod sa sudlanan. Pag-adto sa imong pribadong mga dokumento sa host in /home Ang mga proseso gikan sa sudlanan dili tingali molampos, ug kung buhaton nila, nan kinahanglan nimo nga adunay mga pribilehiyo sa mga file sa host system, tungod kay gipadagan namon ang sulud sa unprivileged mode. Pinasukad sa kini nga kasayuran, mahimo nimong masusi ang peligro sa paglakip sa mga extension sa jupyter lab.

Naghimo og mga notebook sa IPython (mga panid sa jupyter lab) pagabuhaton na sa home directory sa user - /home/jupyter, apan ang among mga plano mao ang pagbahin sa datos (bahin) tali sa host ug sa sudlanan, busa balik sa console ug hunong jupyter lab pinaagi sa pagpatuman sa hotkey - CTRL+C ug pagtubag y sa hangyo. Dayon ihunong ang interactive session sa user jupyter pagkompleto sa usa ka hotkey CTRL+D.

Pagpaambit sa datos sa host ^

Aron mapaambit ang datos sa host, kinahanglan nimo nga maghimo usa ka aparato sa sulud nga nagtugot kanimo sa pagbuhat niini ug aron mahimo kini, pagdagan ang mosunud nga mando kung diin among gipiho ang mga mosunud nga yawe:

  • lxc config device add — Gidugang sa mando ang pag-configure sa aparato
  • jupyter — ID sa sudlanan diin gidugang ang configuration
  • hostfs — Device ID. Mahimo nimong itakda ang bisan unsang ngalan.
  • disk - Gipakita ang tipo sa aparato
  • path — Gipiho ang agianan sa sudlanan diin i-mount sa LXD kini nga aparato
  • source — Ipiho ang gigikanan, ang agianan sa direktoryo sa host nga gusto nimong ipaambit sa sulud. Ipiho ang dalan sumala sa imong gusto
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Alang sa katalogo /home/dv/projects/ipython-notebooks permiso kinahanglang itakda sa container user nga sa pagkakaron adunay UID nga katumbas sa SubUID + UID, tan-awa ang kapitulo Kaluwasan. Mga Pribilehiyo sa Container sa artikulo Mga sukaranan nga bahin sa LXD - Linux container system.

Ibutang ang pagtugot sa host, diin ang tag-iya mao ang tiggamit sa sulud jupyter, ug ang variable $USER ipiho ang imong host user isip usa ka grupo:

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

Hello, Kalibutan! ^

Kung aduna ka pa'y bukas nga sesyon sa console sa sudlanan nga adunay jupyter lab, unya i-restart kini gamit ang bag-ong yawe --notebook-dir pinaagi sa pagbutang sa bili /mnt/hostfs ingon ang agianan padulong sa gamut sa mga laptop sa sulud alang sa aparato nga among gibuhat sa miaging lakang:

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

Unya adto sa panid http://10.0.5.5:8888 ug paghimo sa imong unang laptop pinaagi sa pag-klik sa buton sa panid sama sa gipakita sa hulagway sa ubos:

Paglansad sa Jupyter sa LXD Orbit

Dayon, sa field sa panid, isulod ang Python code nga magpakita sa classic Hello World!. Kung nahuman na nimo pagsulod, pindota CTRL+ENTER o ang "play" nga buton sa toolbar sa ibabaw aron ipabuhat kini sa JupyterLab:

Paglansad sa Jupyter sa LXD Orbit

Niini nga punto, hapit tanan andam na alang sa paggamit, apan dili kini makapaikag kung dili kami mag-install dugang nga mga module sa Python (bug-os nga aplikasyon) nga mahimo’g mapalapad ang sukaranan nga mga kapabilidad sa Python sa kini nga punto. jupyter lab, busa, magpadayon ta :)

PS Ang makapaikag nga butang mao nga ang daan nga pagpatuman jupyter ubos sa code name Notebook ni Jupiter wala mawala ug kini anaa sa susama sa jupyter lab. Aron makabalhin sa daan nga bersyon, sunda ang link nga idugang ang suffix sa adres/tree, ug ang transisyon ngadto sa bag-ong bersyon gihimo uban sa suffix /lab, apan dili kinahanglan nga espesipiko:

Pagpalapad sa mga kapabilidad sa Python ^

Niini nga seksyon, atong i-install ang ingon ka kusgan nga mga module sa pinulongang Python sama sa numpy, Pandas, matplotlib, IPyWidgets ang mga resulta niini gisagol sa mga laptop jupyter lab.

Sa wala pa i-install ang nalista nga mga module sa Python pinaagi sa manager sa package pip kinahanglan una natong sulbaron ang mga dependency sa sistema sa Alpine Linux:

  • g++ — Gikinahanglan alang sa pag-compile sa mga module, tungod kay ang pipila niini gipatuman sa pinulongan C ++ ug magkonektar sa Python sa runtime isip binary modules
  • freetype-dev - dependency alang sa Python module matplotlib

Pag-instalar sa mga dependency:

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

Adunay usa ka problema: sa kasamtangan nga kahimtang sa pag-apod-apod sa Alpine Linux, dili posible nga i-compile ang bag-ong bersyon sa NumPy; usa ka sayup sa pag-compile ang makita nga dili nako masulbad:

sayop: Dili makahimo og mga ligid alang sa numpy nga naggamit sa PEP 517 ug dili direkta nga ma-install

Busa, among i-install kini nga module isip usa ka sistema nga pakete nga nag-apod-apod sa usa ka nahipos na nga bersyon, apan mas karaan og gamay kay sa anaa karon sa site:

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

Sunod, i-install ang mga module sa Python pinaagi sa manager sa package pip. Palihug pagpailub kay ang pipila ka mga modules mag-compile ug mahimong molungtad ug pipila ka minuto. Sa akong makina, ang pag-compile gikuha ~ 15 minuto:

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

Paglimpyo sa mga cache sa pag-install:

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

Pagsulay sa mga module sa JupyterLab ^

Kung nagdagan ka jupyter lab, i-restart kini aron ang bag-ong na-install nga mga module ma-aktibo. Aron mahimo kini, sa sesyon sa console, i-klik CTRL+C diin nimo kini gipadagan ug pagsulod y sa paghunong sa hangyo ug unya magsugod pag-usab jupyter lab pinaagi sa pagpindot sa pataas nga arrow sa keyboard aron dili na mosulod sa command ug dayon Enter sa pagsugod niini:

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

Lakaw sa panid http://10.0.5.5:8888/lab o i-refresh ang panid sa imong browser, ug dayon isulod ang mosunod nga code sa bag-ong notebook cell:

%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

Kinahanglan nga makakuha ka usa ka resulta sama sa litrato sa ubos, kung diin IPyWidgets nagmugna og elemento sa UI sa panid nga interactive nga nakig-interact sa source code, ug usab matplotlib nagpakita sa resulta sa code sa porma sa usa ka hulagway isip function graph:

Paglansad sa Jupyter sa LXD Orbit

Daghang mga pananglitan IPyWidgets makit-an nimo kini sa mga tutorial dinhi

Unsa pa? ^

Maayong pagkabuhat kung nagpabilin ka ug nakaabut sa katapusan sa artikulo. Gituyo nako nga wala mag-post og andam nga script sa katapusan sa artikulo nga mag-install jupyter lab sa "usa ka pag-klik" aron madasig ang mga trabahante :) Apan mahimo nimo kini sa imong kaugalingon, tungod kay nahibal-an na nimo kung giunsa, nga nakolekta ang mga mando sa usa ka script sa Bash :)

Mahimo usab nimo:

  • Pagbutang ug ngalan sa network alang sa sudlanan imbes sa IP address pinaagi sa pagsulat niini sa yano /etc/hosts ug i-type ang adres sa browser http://jupyter.local:8888
  • Pagdula uban ang limitasyon sa kapanguhaan alang sa sudlanan, para niini basaha ang kapitulo sa batakang LXD nga kapabilidad o pagkuha og dugang nga impormasyon sa LXD developer site.
  • Usba ang tema:

Paglansad sa Jupyter sa LXD Orbit

Ug daghan pa ang imong mahimo! Mao ra. Manghinaut ko nga molampos ka!

UPDATE: 15.04.2020/18/30 XNUMX:XNUMX - Gitul-id nga mga sayop sa kapitulo nga "Hello, World!"
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX - Gitul-id ug gidugang nga teksto sa paghulagway sa pagpaaktibo sa extension manager jupyter lab
PAG-UPDATE: 16.04.2020/10/40 XNUMX:XNUMX — Gitul-id nga mga sayup nga nakit-an sa teksto ug gamay nga gibag-o alang sa labi ka maayo nga kapitulo nga "Pag-install sa batakang software ug pag-set up sa sistema"

Source: www.habr.com

Idugang sa usa ka comment