Skip to content

JupyterLab 插件

JupyterLab 插件本质上就是运行在浏览器中的 JavaScript 文件,当然有些需要后端支持的也需要 Python 代码。他们大多数能够使用 pip/conda 安装。

Tips

纯粹属于前端的可能会被放置到 npm 上,不过大部分是混合前端和后端支持,通常在 pip 上安装

Tips

注意后端插件需要通过 jupyter server extension list 查看

notebook 和 lab 插件

最初只有 Notebook 时,Jupyter 维护了一个jupyter_contrib_nbextensions仓库,其中维护了很多 Notebook 插件。并且第三方社区也维护了很多插件。

在切换到 JupyterLab 后这些插件都无法使用了,而是引入了全新的插件管理器来管理插件。而最新的 Jupyterlab 4 和 Notebook 7 又进行了更大升级,一大堆社区插件又不能使用了。所以目前推荐仍然使用 Jupyterlab 3,之后根据自己使用的插件来看是否进行升级。

插件管理器

JupyterLab 本身带有一个扩展管理器,我们可以从其中搜索插件来安装,他和直接使用 pip/conda 安装的效果是一样的。并且我们可直接在插件管理器上管理我们的插件。

当然同样可以使用 jupyter labextension 来管理插件:

命令 说明
jupyter labextension list 列出所有插件
jupyter labextension disable my-extension 禁用插件
jupyter labextension enable my-extension 启用插件
jupyter labextension install my-extension 安装插件(从 npm 源安装)
jupyter labextension uninstall my-extension 卸载插件(最好不要使用)

Tips

使用 labextension install 安装插件需要 node.js,他可以由 conda 来管理

插件推荐

我们可以从以下几个地方查找插件:

  1. 最万能的 github
  2. jupyterlab-contrib仓库维护了很多高质量有用的插件
  3. Topics jupyterlab-extension中列出了很多插件

语言包

jupyterlab/language-packs仓库维护了目前所有支持的语言包,他们会被发布到 PyPI 和 conda-forge 频道,具体对应语言的安装可以到仓库中对应语言的 readme.md 中查看:

Bash
pip install jupyterlab-language-pack-zh-CN

conda install -c conda-forge jupyterlab-language-pack-zh-CN

之后刷新浏览器(不需要重启服务)就能够在 Settings -> Language 中找到对应的语言包了。

jupyterlab-git

jupyterlab-git 是典型的需要后端提供服务还需要在前端绘制页面的插件,它提供了在 Jupyter 中使用 git 的能力。

Bash
conda install -c conda-forge jupyterlab-git

# jupyterlab 3 版本安装
conda install -c conda-forge "jupyterlab<4" jupyterlab-git

它会自动安装 Server 插件以及 labextension:

Bash
-> % jupyter server extension list
    ...
    jupyterlab_git enabled
    - Validating jupyterlab_git...
      jupyterlab_git 0.44.0 OK

-> % jupyter labextension list
JupyterLab v3.6.8
    ...
    @jupyterlab/git v0.44.0 enabled OK (python, jupyterlab-git)

jupyterlab_code_formatter

jupyterlab_code_formatter用于格式化单元格,他支持 black/isort:

Bash
pip install jupyterlab-code-formatter

pip install black isort

他同样是一个典型的后端提供服务前端提供设置的工具。推荐开启设置中的 Auto format config

Tips

像这类后端提供服务的都需要重新启动下 Jupyter Server.

stickyland

stickyland是一个杀手级的功能。它能够将单元格固定成一个悬浮窗口使用。这样在对比数据的时候非常有用:

stickyland

Bash
pip install stickyland

目前该插件要求 Jupyter < 4,在 Jupyter 4 中可以使用右键菜单选择 为单元格输出创建新视图 来实现类似的效果,还有一个就是通过创建多个 Notebook 文件然后连接同一个内核,这样他们就可以共享函数和变量了,就可以通过拆分窗口的形式来预览了

jupyterlab-vim

jupyterlab-vim即 Jupyter 中的 Vim 绑定。

Bash
conda install -c conda-forge jupyterlab_vim

Tips

在 MacOS 中无法重复使用 hjkl 此时需要在 Mac 终端执行defaults write -g ApplePressAndHoldEnabled -bool false并重启浏览器,具体查看issues 62

jupyterlab-execute-time

jupyterlab-execute-time会始终在单元格上显示运行时间。类似每次都执行 %%timelt:

Bash
conda install -c conda-forge jupyterlab-execute-time