jk's notes
  • 高级应用

高级应用

主要介绍:

  • Jupyter 扩展
  • Widget 控件
  • Magic 命令
  • Nbconvert

主要是对 Jupyter Notebook 的深度定制.

5.1 Jupyter 扩展

Jupyter Notebook 提供了一个很好的交互式环境, 同时还支持各类插件扩展.

5.1.1 安装 jnb 扩展包

Jupyter 提供了很好的扩展性. 首先是 jupyter_contrib_nbextensions, 它是 jnb 主要的扩展包之一. 是非官方的, 社区贡献的扩展功能合集. 提供了大量实用的功能.

文档地址, 里面有详细的安装说明与实用方法.

安装需要三个步骤:

  1. 安装其 pip 包
  2. 安装其 js 与 css 文件
  3. 启用该扩展

注意先激活对应环境

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
  • 第一段命令是安装包
  • 第二段命令是将扩展包中的 js 与 css 文件复制到本机的 nootbook 服务器的目录下, 并修改相关配置

建议使用 conda 来安装 conda install -c conda-forge jupyter_contrib_nbextensions.

最后在启动 jupyter notebook. 然后就可以看到 Nbextensions 的选项卡.

image-20251020143533885

取消复选框, 然后就可以选择扩展了, 选中即启用.

5.1.2 常用的扩展功能

主要介绍几个常用的扩展.

1. Collapsible Headings

该扩展会根据页面中 Markdown 标题级别对文档内容进行折叠, 便于查看.

2. Codfolding

该扩展提供代码折叠的功能.

3. Freeze

目的是将单元格设置为释放, 只读, 冻结, 三种状态. 利用工具栏上的按钮来控制.

只读模式下, 不允许编辑, 但可以运行. 冻结模式下不可编辑也不可运行.

4. Hide Header

使用 Ctrl + H 来隐藏页面上方的横幅, 菜单, 工具栏.

如果是 Chrome, 快捷键可能会有冲突, 可以在设置中修改.

5. Hightlight selected word

实现选中一个变量名后, 其余该变量名的位置自动高亮.

6. Hinterland

代码自动补全

7. nbTranslate

将内容进行翻译成另一种语言. 开启后, 选中一个 Cell, 可以执行翻译, 会生成一个翻译后的 Cell.

8. Scratchpad

提供一个草稿面板, 临时运行 python 代码进行必要的测试.

9. Table of Content

基于 Markdown 生成目录.

5.1.3 理解 Jupyter Notebook 扩展

Jupyter 提供了很好的扩展性, 我们可以从下面几个方面来扩展它.

  1. 内核. 默认 Jupyter 使用 IPython 内核, 来运行 Python 代码. 可以安装其他内核来运行其他语言.
  2. IPython 内核扩展. 默认 IPython 内核, 可以安装 Python 模块来修改交互环境与功能.
  3. Notebook 服务器扩展. 主要是修改 Notebook 服务器的配置与行为.
  4. Notebook 扩展. 改善与增强 Notebook 的功能, 上一节就是对 Notebook 的扩展.

从前面安装的 nbextension 来看, 在 notebook 的选项卡中提供了新的选项卡, 这就是对 Notebook 服务器的扩展, 而其中提供的扩展项就是对 notebook 的扩展.

服务器扩展又被称为 配置器. 上面的扩展可以称为 Jupyter Nbextensions Configurator.

另外扩展包会安装在 site-packages 目录下, 并且每一个扩展都由几个固定的文件构成:

image-20251020162133006

其中:

  • JS 文件用于实现扩展功能.
  • Yaml 文件为服务器扩展提供相关信息.
  • CSS 文件由 JS 加载, 渲染页面.
  • README.md 文件为扩展的说明.

启用某个扩展除了在页面中进行操作, 还可以在命令行中操作:

jupyter nbextension enable <nbextension require path>
jupyter nbextension disable <nbextension require path>

例如:

jupyter nbextension enable condefolding/main

要关闭 Nbextension 可以在 web 页面中取消选中 Nbextensions dashboard tab. 要重新启用可以执行:

jupyter nbextensions_configurator enable --user

在 GitHub 上还有其他扩展包: https://github.com/topics/nbextension. 要安装某个包, 可以使用下面的语法, 以 expand-cell-fullscreen 为例:

git clone https://github.com/scottlittle/expand-cell-fullscreen.git
jupyter nbextension install expand-cell-fullscreen
jupyter nbextension enable expand-cell-fullscreen/main

卸载该扩展使用

jupyter nbextension uninstall expand-cell-fullscreen

5.2 Widget 控件

Last Updated:
Contributors: jk