偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

只有想不到,「99」種擴展Jupyter功能的好方法

開發(fā) 開發(fā)工具 前端
Jupyter 生態(tài)系統(tǒng)非常完善與強大,基本上沒有它做不到的,只有你想不到的。在這篇文章中,作者介紹了能擴展 Jupyter 功能的各種方向,也許下一次需要時,就能真正「想到」這類擴展操作。

當(dāng)有人說:「你可以用 Jupyter 擴展解決這個問題」,他們可能沒有說清楚是什么樣的擴展。Jupyter 生態(tài)系統(tǒng)是非常模塊化且具有擴展性的,所以有很多種擴展方式。這個博客希望能總結(jié)最常用的 Jupyter 擴展,并幫助你發(fā)掘生態(tài)系統(tǒng)中的新功能。

[[269289]]

JupyterLab 擴展

在 JupyterLab 中用 jupyterlab-drawio 擴展繪圖

JupyterLab 是廣受歡迎的 Jupyter Notebook「新」界面。它是一個交互式的開發(fā)環(huán)境,可用于筆記本、代碼或數(shù)據(jù),因此它的擴展性非常強。使用相關(guān)的擴展,可以添加一整套新功能,或者完全改變界面的運行方式。這些擴展是基于 TypeScript 火 JavaScript 寫的,它們在瀏覽器里運行。

經(jīng)典的 Jupyter Notebook 擴展

Jupyter Notebook 中的內(nèi)容列表擴展

人們總是會想到經(jīng)典的 Jupyter 筆記本界面,但實際上,你可擴展它的各個模塊。這些 JavaScript 客戶端可以讓你按照自己的想法添加或改變功能,它們和 JupyterLab 擴展是一樣的。

筆記本服務(wù)器擴展(serverextention)

和前兩種擴展不同,Jupyter 筆記本的服務(wù)器擴展使用 Python 語言編寫,并加入了很多服務(wù)端的功能,以下有兩個主要的例子。

在 JupyterLab 中預(yù)覽 LaTeX 內(nèi)容

(1) 預(yù)覽 LaTeX

***個是一個為 JupyterLab 或經(jīng)典的 Jupyter 筆記本提供的后端擴展——jupyterlab-latex。它可以在 JupyterLab 中預(yù)覽 LaTeX 文件。它有一個和 JupyterLab 文本編輯器集成的擴展,以及一個后端服務(wù)器擴展,可以運行 LaTeX 命令,并在前端顯示效果。

(2) 集成網(wǎng)絡(luò)應(yīng)用

第二個則是為提供服務(wù)端處理提供用戶界面的擴展。因為服務(wù)網(wǎng)擴展可以作為任意 TornadoHTTP handler,因此任何你想得到的網(wǎng)絡(luò)應(yīng)用都可以寫成一個 Jupyter 服務(wù)擴展。這里的例子是 npgipuller,提供了用戶界面,可以將 git 代碼倉庫發(fā)布給用戶。

(3 Jupyter 內(nèi)核

你可能已經(jīng)很熟悉在 Jupyter 筆記本中使用 Python 語言了,其實你可以在其中運行很多語言:R、Julia、JavaScript、Octave、Scala/Spark、C++、bash,甚至是 Matlab。這些都被稱作內(nèi)核。你可以為自己常用的編程語言寫一個內(nèi)核,將 Jupyter 協(xié)議直接用在上面,用 metakernel 項目打包,或者用 Xeus 打包成 C++依賴。內(nèi)核制作好以后,它可以在任何一個 Jupyter 前端運行,包括經(jīng)典筆記本、JupyterLab、 nteract、Jupyter 命令行等。

IPython Magics

如果你在筆記本里寫過如%matplotlib inline 這樣的命令,那么你已經(jīng)嘗試過 IPython 功能了。這些命令就像是 Python 中的宏(macro)——你可以寫定制化的代碼,將剩余的代碼塊獨立出來,然后做自己想做的事情。

這種魔術(shù)函數(shù)從% 開始,然后通過% 后面的代碼發(fā)揮功能。例如%cd somedirectory 可以切換 Python 運行中的文件目錄。代碼塊功能從%% 開始,并運行后面的整個塊。%%timeit 應(yīng)該是***的,它可以提供運行代碼塊的時間。

你也可以構(gòu)建自己的魔術(shù)函數(shù)。例如,ipython-sql (https://github.com/catherinedevlin/ipython-sql) 包提供%%sql 命令,可以和 sql 數(shù)據(jù)庫無縫工作。然而,和之前列出的擴展不同,IPython 的命令只能在有 IPython 內(nèi)核的環(huán)境工作。

IPython 小工具

用 drop down 玩轉(zhuǎn)繪圖功能。

用 drop down 玩轉(zhuǎn)繪圖功能。

IPython 小工具為 Jupyter 筆記本和 IPython 內(nèi)核提供了 GUI 工具。這些工具可以讓你在共享筆記本時,使用 GUI 調(diào)試,而非使用代碼。如果和其他工具,如 voila 聯(lián)用,你可以制作一個類似儀表盤一樣的應(yīng)用,其他人可以直接使用,甚至都不知道這是一個 Jupyter 筆記本。

你可以自己定制一些工具,為其他人提供領(lǐng)域內(nèi)的動態(tài)可視化。例如,你可以用 ipyleaflet 制作動態(tài)地圖,用 itk-jupyter-widget 動態(tài)地研究圖像分割/配準(zhǔn)任務(wù),或者用 pythreejs 建模 3D 目標(biāo)。

內(nèi)容管理器

內(nèi)容管理器決定了你讀寫文件時的操作。默認情況下,管理器從本地文件系統(tǒng)中讀寫文件,但是一個定制化的管理器可以從其它地方讀寫文件,如 Amazon S3 / Google Cloud Storage、PostgreSQL、HDFS 等。你可以通過 web 界面讀寫它們,就好像文件在本地一樣。

我最喜歡的內(nèi)容管理器是 Jupytext。在你讀寫.ipynb 的文件時,它會將其轉(zhuǎn)換為.py 文件,并保持文件同步。在你 IDE 中對一個.py 文件進行了很多編輯后,可以自動在筆記本中看到這些更新,這是很神奇的事情。

Jupytext: .ipynb 或者 .py? 我全都要

Jupytext: .ipynb 或者 .py? 我全都要

擴展 JupyterHub

JupyterHub 是多用戶應(yīng)用,可以使用于教學(xué)、實驗室或者生產(chǎn)中。這些組織很可能有其它系統(tǒng),所以 Jupyter 需要和這些系統(tǒng)集成到一起。以下是一些擴展 JupyterHub 的簡單方法。

(1) 認證器

JupyterHub 是一個多用戶應(yīng)用,所以用戶需要登錄,認證器的工作是對登錄用戶進行身份驗證?,F(xiàn)在已經(jīng)有許多流行的驗證器了,如 LDAP、OAuth(Google、GitHub、CILogon、Globus、Okta、Canvas 等)。你可以寫一個自己需要的認證器,因此 JupyterHub 可以覆蓋各種使用場景。

(2) 生成器(Spawner)

如果使用一個可插拔的生成器,你可以用很多方法給每個用戶提供 Jupyter 筆記本服務(wù)器。你可能讓他們從一個節(jié)點生成 Docker 容器、將它們連接到 Kubernetes 上、讓它們使用你的 HPC 集群、或者使用你的 Hadoop 或者 Spark 集群、用 systemd 提供服務(wù)、或者直接將這些服務(wù)器視為不同的 Linux 用戶。這些生成器一般都很容易定制參數(shù),當(dāng)然你也可以自己寫一個。

(3) 服務(wù)

你有時希望給 JupyterHub 用戶提供額外服務(wù)——在閑置時回收資源,或者讓他們發(fā)布筆記本。你可以運行一個 JupyterHub Service 來提供這些服務(wù)。用戶可以發(fā)起請求,而服務(wù)也可以向 JupyterHub 發(fā)起 API 請求。這些可以是直接的請求,或者網(wǎng)絡(luò)服務(wù)。例如,BinderHub (https://github.com/jupyterhub/binderhub) 是 JupyterHub 服務(wù)中的一種。

NBConvert Exporter

Nbconvert 擴展可以令筆記本格式的文件和其他格式相互轉(zhuǎn)換。如果你導(dǎo)出筆記本到 PDF、LaTeX、HTML 或者 nbviwer 的話,你已經(jīng)使用了這個擴展。在這個擴展里,對應(yīng)每一個格式都有一個導(dǎo)出器,你也可以寫一個針對自己格式的導(dǎo)出器,或者可以利用已有的定制一個。

在寫這篇博客時,我最開心的時刻是發(fā)現(xiàn)有 docx 文檔(word)導(dǎo)出器。

word 導(dǎo)出器:https://github.com/m-rossi/jupyter-docx-bundler

Bundler 擴展

很容易就能找到 nbconvert 導(dǎo)出器的方法

很容易就能找到 nbconvert 導(dǎo)出器的方法

Bundler 擴展使你可以在菜單欄添加「下載為」按鈕。這個按鈕和 nbconvert 導(dǎo)出器聯(lián)用,使得導(dǎo)出器更容易被找到,盡管你可以寫一個定制化的擴展,使筆記本在下載前進行任何操作。例如,nbreport 擴展提供一個 bundler 擴展,可以將筆記本格式導(dǎo)出為 HTML。

Repo2Docker

Repo2Docker 擴展將 git 或者其他倉庫轉(zhuǎn)換為可重新使用、適合于數(shù)據(jù)科學(xué)的 docker 鏡像。網(wǎng)站 mybinder.org(和其他 binderhub 安裝包)使用這個擴展構(gòu)建和運行 Jupyter/RStudio 進程。如下所示,現(xiàn)在有兩種擴展 repo2docker 的方式。

(1) BuildPacks

Repo2docker 會查看代碼庫中的內(nèi)容,并決定如何去構(gòu)建它。例如,如果里面有 requirements.txt 文件,它會設(shè)置一個小型 conda 環(huán)境,并把 Python 包安裝進去。如果里面有 install.R 文件,擴展則會保證 R/RStudio 已經(jīng)安裝。寫一個 BuildPack (https://repo2docker.readthedocs.io/en/latest/architecture.html#buildpacks) 使你可以將這個功能擴展到你喜歡的編程語言中。

(2) ContentProviders

Repo2docker 中的 repo 部分有點用詞不當(dāng)——實際上你可以將任何程序打包進一個 Docker 鏡像中?,F(xiàn)在,它支持 git 本地文件夾和 zenodo (https://zenodo.org/) 代碼倉庫,但是你可以為自己喜歡的代碼源添加支持,并制作一個新的 ContentProvider。

只有這些了嗎?

當(dāng)然不是!Jupyter 生態(tài)是一個很大的系統(tǒng),一篇博客無法完全覆蓋所有內(nèi)容。這個博客已經(jīng)少了一些,如 enterprise gateway 和 TLJH Plugins。Jupyter 的生態(tài)是活躍多變的,很快還有更多好用的擴展出現(xiàn)。

原文鏈接:https://blog.jupyter.org/99-ways-to-extend-the-jupyter-ecosystem-11e5dab7c54

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2012-07-11 10:38:34

JavaScript

2015-05-05 11:00:13

大數(shù)據(jù)時代創(chuàng)意

2015-09-11 11:13:15

可穿戴設(shè)備

2023-12-13 14:26:29

2022-10-11 14:39:18

泄露數(shù)據(jù)數(shù)據(jù)安全

2009-04-18 06:23:33

Linux漫畫

2012-06-26 14:21:50

JavaScript

2018-09-28 16:20:57

區(qū)塊鏈區(qū)塊鏈技術(shù)比特幣

2011-07-28 10:10:31

Linux

2017-06-01 16:20:08

MySQL復(fù)制延遲數(shù)據(jù)庫

2018-06-15 09:00:00

2011-04-12 09:12:06

程序員

2025-06-26 01:22:00

SpringBean開發(fā)

2022-08-02 15:04:36

JavaScript

2015-08-05 17:16:03

OpenStackUnitedstack

2011-08-02 09:31:52

SQL語句字符串

2012-04-23 22:50:49

Windows 8

2019-07-18 11:17:53

數(shù)據(jù)

2011-10-27 17:23:04

iOS 5iOS 4蘋果

2014-09-16 16:42:39

物聯(lián)網(wǎng)應(yīng)用
點贊
收藏

51CTO技術(shù)棧公眾號