只有想不到,「99」种扩展Jupyter功能的好方法
作者:网友投稿 时间:2019-07-01 21:03
当有人说:「你可以用 Jupyter 扩展解决这个问题」,他们可能没有说清楚是什么样的扩展。Jupyter 生态系统是非常模块化且具有扩展性的,所以有很多种扩展方式。这个博客希望能总结最常用的 Jupyter 扩展,并帮助你发掘生态系统中的新功能。

JupyterLab 扩展

在 JupyterLab 中用 jupyterlab-drawio 扩展绘图
JupyterLab 是广受欢迎的 Jupyter Notebook「新」界面。它是一个交互式的开发环境,可用于笔记本、代码或数据,因此它的扩展性非常强。使用相关的扩展,可以添加一整套新功能,或者完全改变界面的运行方式。这些扩展是基于 TypeScript 火 JavaScript 写的,它们在浏览器里运行。
经典的 Jupyter Notebook 扩展

Jupyter Notebook 中的内容列表扩展
人们总是会想到经典的 Jupyter 笔记本界面,但实际上,你可扩展它的各个模块。这些 JavaScript 客户端可以让你按照自己的想法添加或改变功能,它们和 JupyterLab 扩展是一样的。
笔记本服务器扩展(serverextention)
和前两种扩展不同,Jupyter 笔记本的服务器扩展使用 Python 语言编写,并加入了很多服务端的功能,以下有两个主要的例子。

在 JupyterLab 中预览 LaTeX 内容
(1) 预览 LaTeX
第一个是一个为 JupyterLab 或经典的 Jupyter 笔记本提供的后端扩展——jupyterlab-latex。它可以在 JupyterLab 中预览 LaTeX 文件。它有一个和 JupyterLab 文本编辑器集成的扩展,以及一个后端服务器扩展,可以运行 LaTeX 命令,并在前端显示效果。
(2) 集成网络应用
第二个则是为提供服务端处理提供用户界面的扩展。因为服务网扩展可以作为任意 TornadoHTTP handler,因此任何你想得到的网络应用都可以写成一个 Jupyter 服务扩展。这里的例子是 npgipuller,提供了用户界面,可以将 git 代码仓库发布给用户。
(3 Jupyter 内核
你可能已经很熟悉在 Jupyter 笔记本中使用 Python 语言了,其实你可以在其中运行很多语言:R、Julia、JavaScript、Octave、Scala/Spark、C++、bash,甚至是 Matlab。这些都被称作内核。你可以为自己常用的编程语言写一个内核,将 Jupyter 协议直接用在上面,用 metakernel 项目打包,或者用 Xeus 打包成 C++依赖。内核制作好以后,它可以在任何一个 Jupyter 前端运行,包括经典笔记本、JupyterLab、 nteract、Jupyter 命令行等。
IPython Magics
如果你在笔记本里写过如%matplotlib inline 这样的命令,那么你已经尝试过 IPython 功能了。这些命令就像是 Python 中的宏(macro)——你可以写定制化的代码,将剩余的代码块独立出来,然后做自己想做的事情。
这种魔术函数从% 开始,然后通过% 后面的代码发挥功能。例如%cd somedirectory 可以切换 Python 运行中的文件目录。代码块功能从%% 开始,并运行后面的整个块。%%timeit 应该是最著名的,它可以提供运行代码块的时间。
你也可以构建自己的魔术函数。例如,ipython-sql (https://github.com/catherinedevlin/ipython-sql) 包提供%%sql 命令,可以和 sql 数据库无缝工作。然而,和之前列出的扩展不同,IPython 的命令只能在有 IPython 内核的环境工作。
IPython 小工具

用 drop down 玩转绘图功能。
IPython 小工具为 Jupyter 笔记本和 IPython 内核提供了 GUI 工具。这些工具可以让你在共享笔记本时,使用 GUI 调试,而非使用代码。如果和其他工具,如 voila 联用,你可以制作一个类似仪表盘一样的应用,其他人可以直接使用,甚至都不知道这是一个 Jupyter 笔记本。
你可以自己定制一些工具,为其他人提供领域内的动态可视化。例如,你可以用 ipyleaflet 制作动态地图,用 itk-jupyter-widget 动态地研究图像分割/配准任务,或者用 pythreejs 建模 3D 目标。
内容管理器




