ENGLISH VERSION

Table of Contents generated with DocToc

Jupyter is not just a tool, it powers the whole innovation of the world.

简介

JupyterLab 是 Jupyter 团队为 Jupyter 项目开发的下一代基于 Web 的界面。相对于 Jupyter Notebook,它的集成性更强,更灵活并且更易扩展。它支持100种多种语言,支持多种文档相互集成,实现了交互式计算的新工作流程1

如果说 Jupyter Notebook 像是一个交互式的笔记本,那么 Jupyter Lab 更像是一个交互式的 VSCode。另外,JupyterLab 非常强大的一点是,你可以将它部署在云服务器,不管是电脑、平板还是手机,都只需一个浏览器,即可远程访问使用。

使用 JupyterLab,你可以进行数据分析相关的工作,可以进行交互式编程,可以学习社区中丰富的 Notebook 资料。

在 GitHub上有超过170万个公共 Jupyter Notebook1。 例如官方 “A gallery of interesting Jupyter Notebooks” 中列举了如下主题的各类 Notebook:

如果你是教授者,你还可以使用它进行教学,例如,可以通过安装插件,自动化检查学生的代码结果。你可以阅读这本书获取更多建议和信息:《Teaching and Learning with Jupyter》

总之,无论你是什么专业,无论你是做什么领域,无论你是之前使用过 Jupyter Notebook,还是完全没有接触过。从现在开始,使用 JupyterLab 这一得心应手的工具,都可以提升你的工作效率,让你的体验更加美好。

Note: 阅读本文最佳方式是打开电脑,实际的动手试一试这些功能

先尝为敬

在安装之前,你可以直接在 Binder 中尝试使用 JupyterLab

try

或者查看一些 Notebooks:https://nbviewer.jupyter.org

view

安装

安装十分简易,可以通过 conda, pip, 或者 pipenv 进行安装

# conda
conda install -c conda-forge jupyterlab

# pip
pip install jupyterlab

# pipenv
pipenv install jupyterlab
pipenv shell

个人推荐使用 conda 的方式安装。

启动

进入到你想要使用 JupyterLab 的目录下,执行命令:

Jupyter lab

即可启动。

lanch

Token 的用途是确认身份,在你打开新标签时需要输入。

介绍

界面:

interfaceoverview

其中,左边栏(command + B)从上到下默认包含:

类型

JupyterLab 中有如下的 block 类型

Notebook 基本功能

JupyterLab 中的 Notebook 和 Jupyter Notebook 中的使用方法一样。

Cell 类型

cellType

每一个 Notebook 就是一个kernel,在其中可以包含多个 cell。

Cell 的类型有三种,分别为:markdown,code 和 row

运行 cell 的快捷键是:shift + command,大概会你用到最多次的一个快捷键。

选择 cell 之后,点击空白处,按下m键,代表转为markdown cell,y键代表转为code cell,同理r键代表转为row cell。

快捷键忘记了也没有关系,去命令板查一下就行:

runcell

自动补全

与大多数本地 IDE 相同,输入部分代码之后按 tab 键,即可自动补全。Jupyter Lab 中的自动补全显示比之前 Jupyter Notebook 的要友好,通过不同的颜色和图标。显示出了补全的类型。

tab

问号查看详细文档

在函数或变量等后面添加一个问号(?),执行之后,即可查看对应的详细文档:

Introspection2

使用两个问号(??),会显示详细源代码信息:

Introspection2

Magic Code

IPython的一些特殊命令(不是内置于 Python 本身)被称为“魔术”命令。魔术命令是以百分号%为前缀的任何命令。

%matplotlib

最常用的魔法命令,大概就是 %matplotlib了。它用于指定 matplotlib 的后端(backend)。通常我们使用:

%matplotlib inline

代表使用 inline作为后端,直接在 Notebook 中内嵌图片,并且可以省略掉 plt.show() 这一步骤。

%timeit

%timeit 函数检查任何 Python 语句的执行时间,例如:

magic1

%run

你可以使用 %run 命令,在Notebook中运行任意的Python文件。例如:

%run add.py

还有其他一些常用命令,例如 %debug、%load_ext 和 %pwd,完整命令可以参考页面

快捷键

熟悉使用快捷键可以有效的帮我们提升效率,下面表格是一些常用快捷键的汇总图,可以先浏览一遍,看看自己经常会用的是什么:

Shortcuts

表格来源以及下载地址:https://blog.ja-ke.tech/2019/01/20/jupyterlab-shortcuts.html

你也可以直接在设置中查看或修改相应的快捷键。

shortcuts2

制作 PPT

你还可以直接通过 Notebook 制作 一份网页版的 PPT,如果你的演示文稿中包含大量的代码,这将是一个不错的选择。

操作如下

  1. 打开一个 NoteBook,例如 Presentation.ipynb

  2. 选择左侧的 Cell Tool 标签页

  3. 选择需要展示的 Cell,设置其类型为Slide

    presentation

  4. 转化并运行 Presentation.ipynb: jupyter nbconvert Presentation.ipynb --to slides --post serve

一个PPT就制作完成啦,显示效果如下:

presentation

此外,如想要回到原来的Jupyter Notebook 也是可以的,只需要将链接后面的 Lab 改为 Tree。

如下:

tree

JupyterLab 独有的实用功能

灵活多窗口视图

如果你使用VSCode这样强大的IDE,Jupyter Notebook 中最不令人满意的一点,就是它只支持单一的文件视图。如果你想要在一个页面上,同时使用Notebook和终端,或者想要再右侧预览markdown文件,Notebook都没有支持。但是,Jupyter Lab 具有灵活的窗口视图功能,使得上述需求能够实现。

通过拖拽的方式,可以自由的添加视图:

muti

还可以将输出的图片作为单独窗口查看:

muti2

对于 markdown 文件,可以点击右键显示菜单,选择预览进行查看。

markdown

另外一个独特的功能是,你可以执行文本中的代码块。

例如,在markdown文档中,有一段Python代码,可以右击,在菜单中选择新建一个console。点击代码片段任意位置之后执行(Shift+Center):

markdown

展开和收缩Cell

我们注意到每一个Cell和Output左边都有一个蓝色的线,点击该蓝线,可以收拢或者展开,如果输出内容很多或者我们暂时不关心一些cell的内容时,就可以将其收拢起来。

cellCr

拖拽 Cell

JupyterLab 非常灵活的第一点是,每一个Cell都是可以拖拽的,你不仅仅可以在单个文件内进行拖拽,还是在文件间进行拖拽,它会自从复制cell都另一个文件中。

drag

主题

JupyterLab 自带黑白两种主题,和多种文本高亮主题。在设置菜单下即可设置主题。我们也可以更加自己的喜好,更换其他的主题。

theme

支持多种类型文件

Jupyter Lab 对不同类型的文件支持也很完善。例如 JSON 文件,csv 文件和图片文件。

data

插件

通 VSCode一样,JupyterLab 也可以安装各类插件(extensions)。安装合适的插件,能够使你的效率提高很多。

JupyterLab 的插件是 npm 安装包。所以按照 JupyterLab 的插件,需要提前按照好 Node.js。

安装命令:

	conda install -c conda-forge nodejs

或者 (Mac Only):

	brew install node

完成之后,有两种方式进行插件的安装:

  1. 通过开启 Extension Manager 来安装和管理插件

  2. 通过执行命令的方式安装。

如果使用第一种方式,需要手动的开启 Extension Manager: 在设置中选择高级设置 (command+逗号 ),再选择Extension Manager一栏,修改设置为 true:

{
	"enabled": true
}

设置成功之后,即可在走侧边栏中看到插件选项卡,可以查看已经按照的插件和探索其他未安装的插件。

data

Awesome jupyterlab extension list

目前,社区中,已经有很多优秀的插件可以使用,如果你自己一个个的去检索寻找非常麻烦,所以我建立了一个目前最完整的实用列表:https://github.com/Yogayu/awesome-jupyterlab-extension。列表中,包含简单的介绍,还有插件的效果展示图。因此,你能很方便的索引到自己需要的插件。

在本文中,重点介绍一些常用的插件。

Github Extenion

安装命令:

jupyter labextension install @jupyterlab/github

该扩展,会在左侧区域添加一个 Github 浏览器选项卡。你可以浏览 GitHub 上的内容,仓库等等。也可以直接打开仓库中 JupyterLab 支持的文件。如果文件是 Notebook 类型,你直接直接运行,无需下载到本地,非常的方便。

输入 GitHub 用户名,即可查看其下所有仓库内容。

github

直接打开 Notebook 文件,即可在本地查看和运行远程 Notebook:

github

Jupyter Git

Jupyter Git 是 JupyterLab 中的 Git图形化管理工具。安装之后,可以在 git标签页,查看对应的文件修改情况和版本历史等信息。类似于VSCode的Git管理工具。( 是的,我们的 JupyterLab 越来越像 VSCode 了 : )

安装命令:

jupyter labextension install @jupyterlab/git
pip install jupyterlab-git
jupyter serverextension enable --py jupyterlab_git

使用:

draw

Jupyterlab-toc

顾名思义,该插件可以自动生成文件内容目录。

安装命令:

jupyter labextension install @jupyterlab/toc

成功之后,即可以点击目录标签页,查看文档目录:

tab

Jupyterlab-drawio

Jupyterlab-drawio 是一个在绘图插件,它将drawio / mxgraph独立集成到了 jupyterlab 中。

安装命令:

jupyter labextension install jupyterlab-drawio

安装成功之后,在启动面板即可以选择 Diagram 类型文件。

draw

Jupyterlab_voyager

Voyager是一种数据可视化工具,可以自动和手动的生成图表。用来查看数据的基本分布信息,十分方便。

安装命令:

jupyter labextension install jupyterlab_voyager

安装之后,选择CSV或者JSON文件,右击选择 open with voyager,即可使用:

vag

安装其他语言的 Kernel

前面我们说到 JupyterLab 支持多种语言,所以我们只需在 https://github.com/jupyter/jupyter/wiki/Jupyter-kernels 列表上找对对应的语言,安装其 Kernel 就可以使用。

这里我们以 R 和 Julia 为例。

安装 R Kernel

安装文档: https://irkernel.github.io

  1. 安装 R 下载地址:https://cran.r-project.org/mirrors.html 清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/CRAN/

  2. 在终端中运行 R, 运行命令:
    The packages (' IRkernel)
    IRkernel: : installspec ()
    
  3. 或者直接使用 conda install -c r r-essentials 安装一些必备的包。

安装 Julia Kernel

安装文档: https://github.com/JuliaLang/IJulia.jl

  1. 安装 Julia

  2. 打开 Julia 之后,运行命令

using Pkg
Pkg.add("IJulia")

完成之后即可在 JupyterLab 中新建对应语言的Notebook。

language

如果想要在同一个Notebook中运行不同的语言,可以参考项目:sos-notebook

Notebook 资源推荐

image-20190504145729721

最后,特别推荐一些书籍和课程的 Notebook:

还有很多很多其他有趣的 Notebook,就等大家自己去探索,或者你可以自己写一个系列啦。

总结

最后,一起来回顾下本文内容吧:

Jupyter Lab CN

看完之后,是不是觉得 JupyterLab 可以成为你的主力数据分析 IDE 了呢?

  1. https://blog.jupyter.org/jupyterlab-is-ready-for-users-5a6f039b8906  2