器→工具, 工具软件

Jupyter Lab使用教程

钱魏Way · · 183 次浏览

Jupyter简介

Jupyter是一个开源的、交互式的计算环境,旨在为科学计算、数据分析和机器学习等领域提供支持。其核心在于Jupyter Notebook,一种Web应用程序,允许用户创建和共享包含实时代码、方程、可视化以及文本的文档。Jupyter支持超过40种编程语言,包括Python、R、Julia和Scala等。以下是对Jupyter的简要介绍:

Jupyter发展历程

Jupyter项目起源于IPython项目,一个旨在提高Python交互式计算体验的项目。随着时间的推移,IPython项目的发展扩展到了对其他编程语言的支持,因此需要一个新的名称来反映这一变化,由此Jupyter诞生。Jupyter这个名字来源于三个核心编程语言:Julia、Python和R,同时也向伽利略的开创性工作致敬,他是第一个使用望远镜记录木星的卫星运动的人。

Jupyter核心特性

  • 代码和数据的交互式执行:用户可以一步步执行代码块,立即看到每步的输出结果。
  • 支持Markdown和HTML:这使得用户可以在同一文档中添加说明、数学方程、图像和视频等。
  • 数据可视化:集成各种图表库,如Matplotlib、Plotly等,方便直观展示数据分析结果。
  • 多语言支持:通过所谓的“kernels”,Jupyter可以运行多种编程语言的代码。
  • 易于共享:Jupyter Notebook可以导出为多种格式,包括HTML、PDF、Markdown等,便于共享和展示。

Jupyter使用场景

  • 数据清洗和转换:数据科学家和分析师可以使用Jupyter Notebook来探索、处理和整理数据。
  • 数值模拟:科学家可以使用Jupyter进行复杂的数学模拟计算。
  • 机器学习:提供了一个便捷的平台,用于训练模型、评估模型性能和调整参数。
  • 教学和学习:Jupyter Notebook是一个出色的教学工具,可以用来演示编程概念、数据分析方法和统计理论。

Jupyter生态组件

Jupyter生态系统由多个组件和工具构成,旨在提供一个全面的、互联的平台以支持交互式数据科学和科学计算。以下是Jupyter生态系统中的一些关键组件:

  • Jupyter Notebook:这是Jupyter项目的核心组件,一个开源的Web应用程序,允许用户创建和分享包含实时代码、方程、可视化和解释性文本的文档。
  • JupyterLab:JupyterLab是Jupyter Notebook的下一代Web界面,提供一个灵活且集成的开发环境,支持笔记本、代码控制台、文本编辑器、终端、数据文件查看等多种工具。
  • JupyterHub:JupyterHub允许多个用户通过浏览器访问Jupyter Notebook环境。它适用于教育、科研和企业环境,可以部署在云平台或本地服务器上,实现资源的集中管理和分配。
  • nbconvert:nbconvert是一个工具,允许用户将Jupyter笔记本转换为其他格式,如HTML、PDF、Markdown、Python脚本等,便于分享和发布。
  • IPython:IPython是交互式Python的强化版,提供了一个富交互性的命令行界面和一个架构,用于并行计算。在Jupyter Notebook中运行的Python代码实际上是通过IPython内核执行的。
  • Jupyter Kernels:Jupyter支持超过40种编程语言,这是通过各种“内核”(Kernels)实现的。内核是与特定编程语言交互的程序。除了Python,还有R、Julia、Scala等多种语言的内核。
  • Binder:Binder是一个开源的Web服务,允许用户在没有任何配置的情况下,直接在浏览器中运行Jupyter笔记本环境。用户只需提供Git仓库的URL,Binder就会创建一个包含这些笔记本的环境。
  • Voilà:Voilà可以将Jupyter笔记本转换为交互式仪表板,使得笔记本不仅可以作为分析和研究的工具,还可以用于构建交互式的Web应用。
  • Nbgrader:Nbgrader是一种用于Jupyter笔记本的自动化作业分发和评分工具,广泛应用于教学场景。
  • Jupyter Widgets:Jupyter Widgets(也称为ipywidgets)是一种交云计算工具,允许在Jupyter笔记本中嵌入交互式HTML控件。
  • Jupyter Community:除了这些技术组件,Jupyter项目还拥有一个活跃的社区,包括开发者、贡献者和用户,他们不断地贡献代码、分析、教程和反馈,推动Jupyter生态系统的发展。

Jupyter生态系统的这些组件相互协作,为数据分析、科学研究、教学等提供了强大、灵活和易用的工具集。

JupyterLab

JupyterLab是Jupyter项目的下一代Web-based交云计算环境,旨在提供一个统一的、集成的开发环境(IDE)体验,同时保持了Jupyter Notebook的核心特性。它是开源的,并设计成可扩展的,这意味着可以通过安装扩展来增加新的功能。JupyterLab不仅支持笔记本,还支持代码控制台、文本编辑器、终端以及自定义组件等,所有这些都可以在同一个窗口中使用。

核心特性:

  • 灵活的工作区:JupyterLab的用户界面允许你自定义布局,可以同时打开和查看多个文档(包括笔记本、数据文件、文本文件等)。
  • 集成的开发环境:它集成了代码编辑器、交互式控制台、图形显示等多种工具,支持多种编程语言。
  • 丰富的扩展支持:可以通过安装第三方扩展来增强JupyterLab的功能,比如支持更多语言的内核、主题、数据可视化工具等。
  • 交互式数据探索:支持交互式数据可视化和操作,使数据分析和模型构建过程更直观。
  • 文件和目录管理:内置文件浏览器使得管理笔记本文件、数据文件和其他文档更加方便。

安装JupyterLab通常很简单,如果你已经有Python环境,可以通过pip安装:pip install jupyterlab

安装完成后,通过命令行启动:jupyter lab

这将启动一个本地服务器,并在默认的Web浏览器中打开JupyterLab的界面。

Jupyter Notebook

JupyterLab是Jupyter Notebook的演进版本,旨在提供更加现代化和强大的用户体验。虽然JupyterLab和Jupyter Notebook共享许多相同的底层技术和概念,但JupyterLab提供了更为灵活和强大的界面,支持更多种类的工作流程和集成开发环境的特性。

Jupyter nbclassic

nbclassic 是 Jupyter 生态系统中的一个相对较新的组件,旨在为用户提供使用 Jupyter Notebook 经典界面的能力,同时运行在 JupyterLab 的架构之上。随着 JupyterLab 的快速发展和普及,Jupyter 社区希望确保那些偏好经典 Notebook 用户界面的用户也能享受到 JupyterLab 提供的底层改进和新特性。

主要特性

  • 经典用户界面:nbclassic 提供了 Jupyter Notebook 经典界面的体验,对于那些习惯了经典界面的用户来说,这提供了无缝过渡的可能。
  • JupyterLab 的优势:尽管用户界面保持经典,nbclassic 仍然运行在 JupyterLab 的基础设施上,这意味着用户可以享受到 JupyterLab 带来的性能和功能上的改进。
  • 平滑过渡:对于计划从 Jupyter Notebook 迁移到 JupyterLab,但又不想完全放弃经典界面的用户,nbclassic 提供了一个平滑过渡的方案。
  • 兼容性:nbclassic 保持对现有 Jupyter Notebook 扩展的兼容性,使用户可以继续使用他们喜爱的扩展和工具,而不需要进行重大修改。

使用场景

  • 经典界面的偏好者:对于那些喜欢 Jupyter Notebook 经典用户界面简洁直观的用户,nbclassic 提供了保持这种经验的同时享受新技术优势的选择。
  • 平滑过渡期的用户:对于那些在考虑是否迁移到 JupyterLab 的用户,nbclassic 作为一个中间站,让他们可以更舒适地适应新环境。
  • 兼容性考虑:使用了大量依赖经典 Notebook 界面的扩展或定制的用户,可以通过 nbclassic 来确保这些功能在新的架构下继续有效。
  • 教育和培训:在教育和培训场景中,讲师可能会选择 nbclassic 来减少学习者的认知负荷,特别是当课程内容侧重于编程或数据科学概念本身,而不是工具的细节时。

安装和使用:

  • nbclassic 可以通过 pip 直接安装:pip install nbclassic
  • 安装完成后,你可以通过命令行启动 nbclassic:jupyter nbclassic

这将启动一个 Web 服务器,并且在默认的 Web 浏览器中打开 Jupyter 的经典界面,但实际上是运行在 JupyterLab 的架构之上。

Jupyer架构

Jupyter(Julia、Python 和 R 的组合词,表示其跨语言的特性)项目的架构设计得相当灵活,以支持交互式计算的广泛应用。Jupyter 的架构可以分为几个核心组件,这些组件共同工作,提供了一个强大且可扩展的环境,旨在改进交互式数据科学和科学计算的工作流程。

核心组件

  • Jupyter Notebook / JupyterLab:前端界面:用户通过Web浏览器与之交互的图形界面。对于Jupyter Notebook,它是一个单一的Web应用程序,而JupyterLab提供了一个更为灵活和可扩展的工作环境,类似于一个Web版的IDE。
  • Notebook服务器:服务器组件:作为前端界面和后端执行环境(内核)之间的桥梁。它处理来自用户界面的请求,如打开笔记本、保存更改、执行代码单元,并将这些请求转发给适当的内核来执行。
  • 内核(Kernels):代码执行引擎:内核是与特定编程语言相关的进程,负责执行用户代码。每种支持的编程语言(Python、R、Julia等)都有自己的内核。Jupyter通过一个通用的消息协议与内核通信,这使得Jupyter能够支持多种编程语言。
  • JupyterHub:多用户服务器:JupyterHub是一个可选组件,使多个用户能够同时访问Jupyter服务器的不同实例。它适用于教育、科研和企业环境,提供用户管理、认证和资源分配等功能。
  • nbconvert:文档转换工具:nbconvert允许用户将Jupyter笔记本转换为其他格式,如HTML、PDF、Markdown等,便于分享和发布。

工作流程

  • 用户在Web浏览器中打开Jupyter Notebook或JupyterLab。
  • Notebook服务器处理用户请求,比如创建新的笔记本或打开已有笔记本。
  • 当用户在笔记本中执行代码时,服务器将代码发送到相应的内核。
  • 内核执行代码,并将结果返回给服务器,服务器再将结果显示给用户。
  • 用户可以将笔记本保存在服务器上,也可以使用nbconvert将笔记本导出为其他格式。

可扩展性和插件

Jupyter项目通过允许第三方开发和集成扩展来增加新的功能,大大增强了其可扩展性。例如,可以添加新的内核以支持更多编程语言,或者开发JupyterLab扩展以增强其界面和功能。

截至2022年的项目关系的图:

 

IPython Kernel

IPython Kernel 是 Jupyter Notebook 的心脏,它是 Python 代码执行的地方。Kernel 这个词在 Jupyter 生态系统中指的是一个编程语言的执行环境。虽然 Jupyter 支持多种语言的 Kernel,但 IPython Kernel 是专为 Python 设计的,并且是最初支持的 Kernel。它不仅可以执行 Python 代码,还提供了丰富的交互式编程功能。

核心特性:

  • 交互式编程:IPython Kernel 支持交云计算的方式,允许用户输入代码,并立即看到执行结果。这种方式非常适合数据探索、实验性分析和快速原型设计。
  • 魔法命令(Magic Commands):IPython 提供了一组以百分号 % 开头的特殊命令,称为魔法命令。这些命令提供了执行控制、环境管理、性能测量等额外的便利功能。例如,%timeit 命令可以用来测量某段代码的执行时间。
  • 高级调试:IPython Kernel 支持高级调试功能,比如设置断点、单步执行代码等,这对于代码开发和错误排查非常有用。
  • 内省:内省(Introspection)功能允许用户查询对象的信息(如类型、函数文档字符串等),这通过在对象名后添加 ? 实现,有助于更好地了解和使用代码。
  • 集成的数据可视化:通过与 Matplotlib、Plotly 等数据可视化库的集成,IPython Kernel 支持在 Notebook 中直接嵌入图表,使数据分析结果的可视化变得简单直观。
  • 富媒体支持:IPython Kernel 支持富媒体输出,例如,可以在 Notebook 中直接展示图片、视频、HTML 内容等。

所有其他接口(包括Notebook、Qt控制台、ipython控制台和第三方接口)都使用IPython Kernel。IPython Kernel是一个独立的进程,负责运行用户代码,以及计算可能的完成情况。前端(如Notebook或Qt控制台)通过使用ZeroMQ套接字发送的JSON消息与IPython内核进行通信;前端和IPython内核之间使用的协议在Jupyter中的消息传递中进行了描述。

这种设计的目的是允许基于同一内核轻松开发不同的前端,同时,也可以通过开发新的内核来支持新的编程语言。目前有两种方法可以为另一种语言开发内核:

  • Wrapper Kernel,重用IPython的通信机制,只实现核心执行部分
  • Native Kernel,采用目标语言实现执行和通信

Jupyter Notebook接口

Jupyter Notebook 提供了一个基于网页的用户界面,允许用户创建和分享包含实时代码、可视化输出和解释性文本的文档。它的界面设计旨在促进交互式数据探索、分析和可视化,同时也支持教育和演示。

Jupyter Notebooks是包含了代码、元数据、内容和输出的结构化数据。当保存到磁盘时,文件扩展名为.ipynb,并使用JSON结构。有关notebook格式结构和规范的更多信息,请参阅nbformat文档

  • Notebook server:不是内核,它主要负责保存和加载notebook,所以你可以编辑notebook,即使你没有该语言的内核(当然也无法运行代码)。
  • Kernel:对notebook文档一无所知:当用户运行它们时,它只接收要执行的代码单元。

Notebook导出为其它格式

使用工具 Nbconvert 将notebook文件导出为其他格式,比如HTML, LaTeX, 或者reStructuredText等。转换过程如下:

  • Preprocessors:在内存中修改notebook。比如:ExecutePreprocessor运行notebook中的代码并更新输出
  • Exporter: 转换notebook为其他格式。
  • Postprocessors:处理导出的文件。

Projects overview

下面是截至2017年的项目关系的图:

可以看到,整个项目分为四层:

  • Kernel:主要是由Ipykernel实现
  • API:将Kernel的一些功能抽象开放出来
  • Application:调用API,实现一些前端的功能。
  • Servers:主要是Web服务器

JupyterLab安装和基本使用

Jupyter Lab是Jupyter的下一代基于Web的交互式开发环境,是 Jupyter Notebook的升级版。

JupyterLab的安装

JupyterLab 可以通过多种方式安装。

使用 pip 安装

如果你已经安装了 Python 和 pip,可以直接使用 pip 来安装 JupyterLab:

pip install jupyterlab

安装Anaconda

如果安装的Anaconda发行版,该版本已经包含了JupyterLab,所以不需要再另外安装。

安装好后,启动JupyterLab

jupyter lab

默认情况下,启动成功后,会自动打开浏览器进入JupyterWeb界面。

界面初识

当点击左边栏的文件浏览(File Browser)按钮,可以查看到notebook的root目录下的文件,上面有添加文件和文件夹、上传文件、刷新文件列表等按钮。

右边是notebook的工作区域, 整个notebook由单元格(cell)组成,以工作区域的上面有notebook的保存、单元的添加、删除、运行、单元类型切换等按钮。

cell的三种类型

  • Code:编辑代码,运行后显示代码运行结果
  • Markdown:编写Markdown文档,运行后输出Markdown格式的文档)
  • Raw:普通文本,运行不会输出结果

notebook支持两种模式

该方式起源于vim编辑器。

  • 编辑模式:
  • 进入方式:命令模式下按Enter键或者鼠标点击Cell的编辑框进入编辑状态
  • 主要操作:可以操作代码或文本的编辑、剪切、复制 、粘贴等操作
  • 命令模式
  • 进入方式:Esc键或者鼠标点击Cell编辑框前方的空白区域进入命令模式。
  • 主要操作:可以操作cell单元本身,比如进入单元的删除、添加、剪切、复制 、粘贴、移动等操作

菜单

  • 文件(File):与文件和目录有关的操作
  • 编辑(Edit):与编辑文档和其他活动有关的动作
  • 视图(View):视图相关操作
  • 运行(Run):用于在不同活动(例如笔记本和代码控制台)中运行代码的动作,可运行选中单元,也可以运行所有单元
  • 内核(Kenel):内核的起、停、切换等相关操作
  • 标签(Tabs):停靠面板中打开的文档和活动的列表
  • 设置(Settings):常用设置和高级设置编辑器
  • 帮助(Help):JupyterLab和内核帮助链接的列表。

工作目录、Notebook文件

工作目录

由启动jupyterLab的启动参数–notebook-dir指定

jupyter lab --notebook-dir="E:/Projects"

如果没有指定参数–notebook-dir,则由配置文件中的参数c.ServerApp.root_dir指定

配置文件可以通过下面命令生成(可参考第五部分内容进行设置):

jupyter lab --generate-config

如果配置文件中也没有指定,工作目录由启动JupyterLab时的当前路径决定。

Notebook文件

Notebooks是包含了代码、元数据、内容和输出的结构化数据。当保存到磁盘时,文件扩展名为.ipynb(存储在工作目录下的某个子目录中),并使用JSON结构。

文件名的修改可以在文件系统中修改,也可以在Web界面右键进行修改

在jupyter中使用shell命令

当你正在使用Python编译器,需要用到命令行工具的时候,麻烦的事情就出现了:要在shell和IDLE之间进行切换。

但是,如果你用的是Jupyter,就完全不用这么麻烦,你可以直接在命令之前加一个!,就能执行shell命令,完全不用来回切换,就能在Jupyter中执行任何命令。

下面是在windows系统中,使用命令dir查看当前目前的文件内容

比如我们需要使用pip安装包的时候,便可以直接在JupyterLab的某个文档的单元中运行!pip install xxxx即可。

快捷键

在使用 Jupyter Notebook 或 JupyterLab 时,熟悉一些快捷方式可以大大提高你的工作效率。这些快捷方式分为两大类:编辑模式(当你正在编辑单元格内的文本时激活)和命令模式(当你在单元格之间导航而不是编辑单元格内容时激活)

以下是一些常用的快捷方式:

通用快捷键(两种模式通用)

  • Shift-Enter : 运行本单元,选中下个单元
  • Ctrl-Enter : 运行本单元
  • Alt-Enter : 运行本单元,在其下插入新单元
  • Ctrl-S: 保存并检查

命令行模式(按 Esc 生效)快捷键

  • A:在当前单元格上方插入一个新单元格。
  • B:在当前单元格下方插入一个新单元格。
  • C:复制当前单元格。
  • V:粘贴到当前单元格下方。
  • D, D(按两次 D 键):删除当前单元格。
  • Z:撤销删除单元格。
  • M:将当前单元格转换为 Markdown 类型。
  • Y:将当前单元格转换为代码类型。
  • Enter:进入编辑模式
  • Shift-M: 合并选中单元格, 如果只有一个单元格被选中,合并下方的单元格
  • Shift-空格: 向上滚动
  • 空格: 向下滚动

编辑模式(按 Enter 生效)快捷键

  • Ctrl + Shift + -:从当前光标位置分割单元格。
  • Esc:返回命令模式。
  • Ctrl-Z : 撤销
  • Ctrl-Shift-Z : 重做
  • Ctrl-/: 注释或解除注释
  • Ctrl-D: 删除整行

自定义快捷方式

在 JupyterLab 中,快捷方式可以通过用户界面或直接编辑 JSON 设置进行自定义。这使得用户可以根据自己的工作习惯调整快捷键,以达到最佳的工作效率。

你可以通过点击左侧边栏的 Settings(设置)> Advanced Settings Editor(高级设置编辑器)> Keyboard Shortcuts(键盘快捷方式)来自定义快捷方式或查看快捷方式。

魔法命令

在 Jupyter Notebook 和 IPython 终端中,魔法命令(Magic Commands)是一些以 % 或 %% 开头的特殊命令,它们提供了一种快速实现各种常见任务的方法,从而使得工作流程更加高效。这些命令不是 Python 语言的一部分,而是 IPython 系统的一种增强功能。魔法命令分为两种:行魔法(Line Magics)和单元格魔法(Cell Magics)。

  • 行魔法(line magic):以单个%字符作为前缀,作用于单行输入
  • 单元魔法(cell magic):以两个%%作为前缀,作用于多行输入。

查看魔法命令

  • %magic: 输出所有魔法指令帮助文档
  • %lsmagic:列出所有magics命令
  • %quickref:输出所有魔法指令的简单版帮助文档
  • %MagicName?:输出某个魔法命令详细帮助文档

查看魔法命令简单版的帮助文档

行魔法(Line Magics)

行魔法以单个百分号 % 开头,作用于行中的内容。它们仅对其后紧跟的单个行命令有效。例如:

  • %timeit:这个魔法命令用于测量单行 Python 语句的执行时间。
  • %matplotlib inline:这使得 Jupyter Notebook 可以内联显示 Matplotlib 生成的图形。
  • %pwd:显示当前工作目录的路径。
  • %cd 进入目录命令
  • %env:列出当前环境变量或设置新的环境变量。
  • %prun statement 通过cProfile执行statement,并打印分析器的结果
  • %run script.py 在ipython中执行一个外部的脚本文件
  • %pdb 在异常发生后自动计入调试器
  • %debug 从最新的异常跟踪的底部进入交互式调试器
  • %precision:设置浮点数输出精度。

单元格魔法(Cell Magics)

单元格魔法以双百分号 %% 开头,作用于整个单元格的内容。例如:

  • %%!:执行 shell 命令并返回输出。
  • %%bash:在 bash shell 内执行单元格内的代码。
  • %%sh:同 %%bash,在 shell 中执行代码。
  • %%system (%%sx):执行单元格内的系统命令。
  • %%capture:捕获单元格的输出(包括 stdout、stderr 和 IPython 的富文本输出)。
  • %%prun:使用 Python 的分析器(profiler)运行单元格内的代码,显示性能分析结果。
  • %%time:测量单元格内代码的执行总时间。
  • %%timeit:使用 Python 的 timeit 模块,多次执行单元格的代码以获得更准确的平均执行时间。
  • %%debug:在单元格内的代码触发的异常后启动 Python 调试器。
  • %%writefile:将单元格的内容写入一个文件。
  • %%HTML:以 HTML 格式渲染单元格内的内容。
  • %%markdown:将单元格内的内容作为 Markdown 渲染。
  • %%latex:将单元格内的内容作为 LaTeX 渲染。
  • %%svg:将单元格内的内容作为 SVG 图像渲染。
  • %%javascript(%%js):在客户端(浏览器内)执行单元格内的 JavaScript 代码。

使用注意

  • 使用魔法命令时,命令和参数之间不需要括号或引号,这是它们与普通 Python 函数的一个重要区别。
  • 魔法命令对于快速数据分析、原型开发、教学演示等场景非常有用。
  • 魔法命令是 IPython 的特有功能,如果在其他 Python 解释器中使用这些命令,会引发语法错误。

通过使用魔法命令,可以有效地探索数据、管理工作环境、优化代码性能等,从而提升工作和学习的效率。

扩展组件

插件的安装

安装 JupyterLab 插件(扩展)是扩展其功能的一种有效方法。根据你的具体需求,你可以添加诸如版本控制(如 Git)、增强的代码编辑功能(如自动补全、语法检查)、交互式小部件等插件。以下是安装 JupyterLab 插件的几种常用方法。

使用 JupyterLab 扩展管理器

JupyterLab 3.0 之后的版本内置了一个图形化的扩展管理器,这是最简单的安装插件的方法。

  • 打开 JupyterLab。
  • 在左侧边栏找到扩展管理器的图标(一个方块中有一个加号的图标)并点击它。
  • 在扩展管理器中搜索你想要的插件。
  • 点击安装按钮进行安装。

如果你找不到扩展管理器的图标,可能需要先启用它。可以通过在 JupyterLab 的命令面板(Cmd/Ctrl + Shift + C)中搜索“Enable Extension Manager (experimental)”命令来启用扩展管理器。

使用命令行

对于一些插件,特别是在 JupyterLab 3.0 之前的版本中,你可能需要使用命令行来安装。这通常涉及到两步:安装 Python 包和安装前端扩展。

对于 JupyterLab 3.0 及以后版本:许多插件都可以通过 pip 或 conda 直接安装,这些命令会同时处理后端(Python 包)和前端(JavaScript 包)部分的安装。

  • 使用 pip:pip install <插件名>
  • 使用 conda:conda install -c conda-forge <插件名>
  • 查看已安装插件:jupyter labextension list
  • 更新已安装插件:jupyter labextension update –all

常用插件

  • jupyterlab-git:一个 JupyterLab 的 Git 扩展,提供了一个图形化界面来控制 Git 版本控制系统。
  • jupyterlab-github:JupyterLab左侧会出现一个github栏按钮,你可以在里面搜索github项目,并且打开项目里面的文件。
  • jupyterlab-lsp:提供了语言服务器协议(Language Server Protocol)的支持,带来了改进的代码补全、文档查看和语法检查等功能。
  • jupyter-matplotlib:帮助我们在notebook界面配合matplotlib实现交互式的作图,只需要在绘图之前执行魔法命令%matplotlib widget,之后绘制的所有matplotlib图表即可自动转换为交互式的:
  • jupyterlab-drawio: 集成了io,使用户可以在 JupyterLab 内创建和编辑图表。
  • jupyterlab-sql:该插件可以在Lab中连接数据库,并进行sql查询和修改操作。
  • jupyterlab-variableInspector:该插件可以在Lab中展示代码中的变量及其属性,类似RStudio中的变量检查器。你可以一边撸代码,一边看有哪些变量。
  • jupyterlab-spreadsheet:在Lab上显示excel表格(只读模式)
  • jupyter-resource-usage:系统监视器是用于显示系统信息(内存和 cpu 使用情况)的 JupyterLab 扩展。它用于监视自己的资源使用情况。
  • jupyterlab-go-to-definition:在Lab笔记本和文件编辑器中跳转到变量或函数的定义。
  • nbdime:Jupyter差异对比与合并
  • RISE:将 Jupyter Notebooks 变成幻灯片

更多插件请见最后参考链接

远程访问

如果你有一台云服务器,是不是很想在服务器上配置好环境,在任何地方都可以通过浏览器进行访问使用呢?考虑到服务器一般使用Linux,这里将以ubuntu为例,介绍如何配置远程访问方式,前提是服务器上已经安装好了JupyterLab。(如果是windows,亦是如此操作):

生成配置文件

jupyter lab --generate-config

运行上面的命令后,会生成jupyter的配置文件,比如这里生成的配置文件为:/home/biaodianfu/.jupyter/jupyter_lab_config.py

编辑配置文件以允许远程访问

打开配置文件,并取消如下配置的注释,编辑内容:

c.LabApp.open_browser = False              # 浏览器是否自动打开
c.ServerApp.allow_remote_access = True     # 远程连接
c.ServerApp.ip = '0.0.0.0'                 # 允许所有ip访问
c.ServerApp.password_required = True       # 是否需要密码
c.ServerApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$DRDk6yNJmBl6+XK0tTdHBQ$Ve48WMkehKHQz0T4v1A5LS8mXAvoiNGQPmxY/9Eu0C0' # 添加密码
c.ServerApp.port = 8888                    # 访问端口
c.ServerApp.allow_root = True     	       #允许root用户开启
c.ServerApp.notebook_dir = '/home/biaodianfu/' #设置工作的文档目录

注意:

  • allow_root: 如果用root 用户启动 jupyter lab时,必须将其设置为True。实际上不建议使用 root 启动,因为这样可能在浏览器端 cmd 窗口直接暴露 root 权限
  • password: 这里的密码需要加密版的密码。
  • port: 示例中设置的 8888 端口
    • 应该是一个未被占用的端口,如果设置的端口被已经被占用,会依次尝试后面的端口,比如8889。
    • 是一个被防火墙允许的端口,如果是阿里云、腾讯云等服务器需要在官网修改安全策略。
  • notebook_dir:设置的是工作的文档目录,需要自行选择并创建(否则运行时会报错)

加密版的密码获取方式为在Jupyter Lab中运行如下代码生成:

from jupyter_server.auth import passwd
passwd()

启动JupyterLab服务为后台进程

nohup jupyter lab &

注意:输入的密码是加密之前的密码,比如在第2步中设置的是123456,则输入123456即可。

JupyterLab 使用 Conda 环境

给虚拟环境添加 Ipykernel

# 1. 创建环境时直接添加ipykernel
conda create -n py39 python=3.9 ipykernel

# 2. 已有环境添加
conda install -n [env_name] ipykernel

Jupyter 环境添加 kernel

# 虚拟环境写入kernel
# 第一个参数是环境名称,第二个参数是kernel显示名称
python -m ipykernel install --user --name py37 --display-name "py37"
jupyter kernelspec list # 显示所有kernel命名
jupyter kernelspec remove [kernel_name] # 移除某个kernel

安装其他语言的 Kernel

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

这里我们以 R为例。

如果你使用的是 Anaconda,也可以通过 conda 来安装 R 和 IRkernel。以下是相应的命令:

conda install -c r r-essentials

r-essentials 包包含 R 语言以及 Jupyter 环境中常用的 R 包,包括 IRkernel。

参考链接:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注