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。
参考链接: