VS Code 中的 Jupyter Notebooks
Jupyter(以前称为 IPython Notebook)是一个开源项目,它允许您轻松地将 Markdown 文本和可执行 Python 源代码组合到称为 notebook 的一个画布上。Visual Studio Code 本身支持使用 Jupyter Notebooks,也可以通过 Python 代码文件来使用。本主题介绍了 Jupyter Notebooks 的原生支持,并演示了如何:
- 创建、打开和保存 Jupyter Notebooks
- 使用 Jupyter 代码单元格
- 使用变量资源管理器和数据查看器查看、检查和筛选变量
- 连接到远程 Jupyter 服务器
- 调试 Jupyter Notebook
设置环境
要在 Jupyter Notebooks 中使用 Python,您必须在 VS Code 中激活 Anaconda 环境,或者安装了 Jupyter 包的其他 Python 环境。要选择环境,请从命令面板中使用 Python: Select Interpreter 命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))。
激活相应的环境后,您可以创建并打开 Jupyter Notebook,连接到远程 Jupyter 服务器以运行代码单元格,并将 Jupyter Notebook 导出为 Python 文件。
工作区信任
开始使用 Jupyter Notebooks 时,您需要确保在受信任的工作区中工作。有害的代码可能嵌入在 Notebook 中,工作区信任功能允许您指明哪些文件夹及其内容应允许或限制自动代码执行。
如果您尝试在 VS Code 处于不受信任的工作区并运行在受限模式下时打开 Notebook,将无法执行单元格,并且富文本输出将被隐藏。
创建或打开 Jupyter Notebook
您可以通过从命令面板运行 Create: New Jupyter Notebook 命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))或在工作区中创建新的 .ipynb
文件来创建 Jupyter Notebook。
接下来,使用右上角的内核选择器选择内核。
选择内核后,位于每个代码单元格右下角的语言选择器将自动更新为内核支持的语言。
如果您有现有的 Jupyter Notebook,可以通过右键单击文件并使用 VS Code 打开,或通过 VS Code 文件资源管理器打开。
运行单元格
运行单个代码单元格
添加代码后,可以使用单元格左侧的 运行 图标运行单元格,输出将显示在代码单元格下方。
要运行选定的代码单元格,您还可以在命令模式和编辑模式下使用键盘快捷方式。Ctrl+Enter 运行当前选定的单元格。Shift+Enter 运行当前选定的单元格并在其下方立即插入一个新单元格(焦点移到新单元格)。Alt+Enter 运行当前选定的单元格并在其下方立即插入一个新单元格(焦点保留在当前单元格)。
运行多个代码单元格
运行多个代码单元格可以通过多种方式实现。您可以使用 Notebook 编辑器主工具栏中的双箭头图标运行 Notebook 中的所有单元格,或通过在当前代码单元格上方或下方选择 运行所有、运行上方所有 或 运行下方所有 来运行。
运行节中的单元格
为了更轻松地运行 Notebook 中相关的单元格,您可以使用 运行节中单元格 操作来运行由 markdown 节标题分组的单元格。此操作在 Notebook 的大纲视图和粘性滚动(Sticky Scroll)元素中可用。
在粘性滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作运行该节。在大纲视图中,选择悬停或选中时出现的工具栏图标,然后通过显示的动作运行单个单元格或单元格的一节。
保存 Jupyter Notebook
您可以使用键盘快捷方式 Ctrl+S 或 文件 > 保存 来保存 Jupyter Notebook。
导出 Jupyter Notebook
您可以将 Jupyter Notebook 导出为 Python 文件(.py
)、PDF 或 HTML 文件。要导出,请在主工具栏上选择 ... > 导出。然后会显示一个文件格式选项的下拉列表。
注意:要导出为 PDF,您必须安装 TeX。如果您没有安装,选择 PDF 选项时会收到需要安装的通知。此外,请注意,如果您的 Notebook 输出只有 SVG,它们将不会显示在 PDF 中。要在 PDF 中包含 SVG 图形,请确保您的输出包含非 SVG 图像格式,或者您可以先导出为 HTML,然后使用浏览器将其另存为 PDF。
在 Notebook 编辑器中使用代码单元格
Notebook 编辑器可以轻松创建、编辑和运行 Jupyter Notebook 中的代码单元格。
创建代码单元格
默认情况下,空白 Notebook 会有一个空代码单元格供您开始使用,现有 Notebook 会在底部放置一个。将您的代码添加到空代码单元格中即可开始。
msg = "Hello world"
print(msg)
代码单元格模式
在处理代码单元格时,单元格可以处于三种状态:未选中、命令模式和编辑模式。代码单元格左侧的垂直条和编辑器边框显示单元格的当前状态。当没有垂直条可见时,单元格未选中。当单元格被选中时,可以处于命令模式或编辑模式。
在命令模式下,单元格左侧会出现一个实心垂直条。可以对单元格进行操作,并接受键盘命令。
在编辑模式下,实心垂直条旁边是单元格编辑器周围的边框。可以修改单元格的内容(代码或 Markdown)。
要切换模式,您可以使用键盘或鼠标。在键盘上,按 Enter 键进入编辑模式,或按 Esc 键进入命令模式。使用鼠标,单击单元格左侧的垂直条或代码单元格中代码/Markdown 区域之外的地方。
添加更多代码单元格
您可以使用主工具栏、单元格的添加单元格工具栏(悬停时可见)以及键盘命令来添加代码单元格。
要在当前选定的单元格下方添加新单元格,请使用主工具栏或单元格悬停工具栏中的加号图标。
当代码单元格处于命令模式时,使用 A 键在上方添加单元格,使用 B 键在选定单元格下方添加单元格。
选择代码单元格
您可以使用鼠标或键盘上的上下箭头键更改选定的代码单元格。当代码单元格处于命令模式时,您还可以使用 J 键(下)和 K 键(上)。
选择多个代码单元格
要选择多个单元格,首先选择一个单元格。填充的背景表示选定的单元格。要选择连续的单元格,按住 Shift 键并单击您想选择的最后一个单元格。要选择任何组的单元格,按住 Ctrl 键并单击您想添加到选定的单元格。
移动代码单元格
您可以通过拖放来在 Notebook 中上下移动单元格。对于代码单元格,拖放区域位于单元格编辑器左侧,如下所示。对于已渲染的 Markdown 单元格,您可以单击任意位置来拖放单元格。
要移动多个单元格,您可以在选择中包含的任何单元格中使用相同的拖放区域。
键盘快捷方式 Alt+Arrow 也可以移动一个或多个选定的单元格。
删除代码单元格
要删除代码,您可以使用代码单元格工具栏中的 删除 图标。当选定的代码单元格处于命令模式时,您可以使用键盘快捷方式 dd。
撤消上次更改
您可以使用 z 键撤消先前的更改,例如,如果您意外进行了编辑,可以将其撤消到先前的正确状态;或者如果您意外删除了单元格,可以恢复它。
在代码和 Markdown 之间切换
Notebook 编辑器允许您轻松地在 Markdown 和代码之间切换代码单元格。选择单元格右下角的语言选择器,可以切换 Markdown 和(如果适用)选定内核支持的任何其他语言。
您也可以使用键盘更改单元格类型。当单元格被选中且处于命令模式时,按 M 键将单元格类型切换为 Markdown,按 Y 键将单元格类型切换为代码。
设置为 Markdown 后,您可以在代码单元格中输入 Markdown 格式的内容。
要渲染 Markdown 单元格,您可以在单元格工具栏中选择对勾标记,或使用键盘快捷方式 Ctrl+Enter 和 Shift+Enter。
清除输出或重启/中断内核
如果您想清除所有代码单元格输出或重启/中断内核,可以使用主要的 Notebook 编辑器工具栏来实现。
启用/禁用行号
在命令模式下,您可以使用 L 键在单个代码单元格中启用或禁用行号。
要切换整个 Notebook 的行号显示,在任何单元格处于命令模式时使用 Shift+L。
目录
要浏览您的 Notebook,请在活动栏中打开文件资源管理器。然后侧边栏中打开 大纲 选项卡。
您可以使用大纲视图中的筛选器控件来包含 Markdown 标题、代码单元格和代码单元格符号。这些筛选器对应于以下设置:
notebook.outline.showMarkdownHeadersOnly
notebook.outline.showCodeCells
notebook.outline.showCodeCellSymbols
注意:默认情况下,大纲只显示 Markdown。要显示代码单元格,请启用以下设置:Notebook > 大纲: 显示代码单元格。
Jupyter Notebook 编辑器中的 IntelliSense 支持
Python Jupyter Notebook 编辑器窗口具有完整的 IntelliSense 支持 – 包括代码补全、成员列表、方法快速信息和参数提示。在 Notebook 编辑器窗口中输入代码与在代码编辑器中一样高效。
变量资源管理器和数据查看器
在 Python Notebook 中,可以查看、检查、排序和筛选当前 Jupyter 会话中的变量。在运行代码和单元格后,通过选择主工具栏中的 变量 图标,您会看到当前变量列表,该列表会随着代码中使用变量而自动更新。变量窗格将在 Notebook 底部打开。
数据查看器
要获取有关变量的更多信息,您还可以双击一行或使用变量旁边的 在数据查看器中显示变量 按钮,以便在数据查看器中查看变量的更详细信息。
此外,您还可以使用其他扩展(如 Data Wrangler)提供的数据查看体验。Data Wrangler 扩展提供了一个丰富的用户界面,用于显示有关数据的信息,并帮助您执行数据概要分析、质量检查、转换等。在我们的文档中了解有关 Data Wrangler 扩展的更多信息。
筛选行
在数据查看器中,可以通过在每列顶部的文本框中输入内容来筛选行。输入您要搜索的字符串,将找到该列中包含该字符串的任何行。
如果您想进行精确匹配,请在筛选器前加上“=”。
更复杂的筛选可以通过输入正则表达式来完成。
保存绘图
要保存 Notebook 中的绘图,只需将鼠标悬停在输出上,然后选择右上角的 保存 图标。
注意:支持渲染使用 matplotlib 和 Altair 创建的绘图。
自定义 Notebook Diff
在底层,Jupyter Notebooks 是 JSON 文件。JSON 文件中的段被渲染为由输入、输出和元数据三个组件组成的单元格。使用基于行的差异比较来比较 Notebook 中所做的更改很困难且难以解析。Notebook 的富差异比较编辑器允许您轻松查看单元格每个组件的更改。
您甚至可以自定义要在差异比较视图中显示哪些类型的更改。在右上角,选择工具栏中的溢出菜单项,自定义要包含哪些单元格组件。输入差异将始终显示。
要了解有关 VS Code 中 Git 集成的更多信息,请访问VS Code 中的源代码管理。
调试 Jupyter Notebook
调试 Jupyter notebook 有两种不同的方式:一种更简单的方式称为“按行运行”,另一种是完整的调试模式。
注意:这两个功能都需要 ipykernel 6+。有关安装或升级 ipykernel 的详细信息,请参阅此 wiki 页面。
按行运行
按行运行允许您逐行执行单元格,而不会被其他 VS Code 调试功能分散注意力。要开始,请选择单元格工具栏中的 按行运行 按钮。
使用同一个按钮前进一个语句。您可以选择单元格 停止 按钮提前停止,或选择工具栏中的 继续 按钮继续运行到单元格末尾。
调试单元格
如果您想使用 VS Code 支持的全套调试功能,例如断点以及进入其他单元格和模块的能力,您可以使用完整的 VS Code 调试器。
- 首先,通过单击 Notebook 单元格的左侧空白区域来设置所需的任何断点。
- 然后在 运行 按钮旁边的菜单中选择 调试单元格 按钮。这将在调试会话中运行该单元格,并在任何运行的代码(即使位于不同的单元格或
.py
文件中)的断点处暂停。 - 您可以像在 VS Code 中通常一样使用调试视图、调试控制台和调试工具栏中的所有按钮。
请注意,调试 jupyter notebook 中的单元格不使用 launch.json 中的任何调试配置。相反,可以通过诸如 jupyter.debugJustMyCode
等设置进行自定义。
搜索 Notebook
您可以使用键盘快捷方式 Ctrl/Cmd + F 在 Notebook 中搜索(或通过筛选搜索选项搜索部分内容)。单击筛选器选项(漏斗图标)以搜索以下内容:
- Markdown 单元格输入(Markdown 源代码)
- Markdown 单元格输出(渲染的 Markdown)
- 代码单元格输入(代码单元格源代码)
- 代码单元格输出(单元格输出)
Notebook 搜索默认仅筛选单元格输入。
连接到远程 Jupyter 服务器
您可以通过连接到远程 Jupyter 服务器,将 Jupyter Notebook 中的密集计算转移到其他计算机上。连接后,代码单元格将在远程服务器而不是本地计算机上运行。
连接到远程 Jupyter 服务器
-
打开 Notebook 右上角的内核选择器按钮(或从命令面板运行 Notebook: Select Notebook Kernel 命令)。
-
选择 现有 Jupyter 服务器 选项以连接到现有 Jupyter 服务器。
-
首次连接到现有服务器时,选择 输入正在运行的 Jupyter 服务器的 URL。
-
当提示您 输入正在运行的 Jupyter 服务器的 URL 时,提供包含
?token=
URL 参数的身份验证令牌的服务器 URI(主机名)。(如果您在 VS Code 终端中启动服务器时启用了身份验证令牌,带令牌的 URL 通常会出现在终端输出中,您可以从中复制它。)或者,在提供 URI 后,您可以指定用户名和密码。
注意:为了增强安全性,Microsoft 建议为您的 Jupyter 服务器配置安全措施,例如 SSL 和令牌支持。这有助于确保发送到 Jupyter 服务器的请求经过身份验证,并且与远程服务器的连接经过加密。有关保护 Notebook 服务器的指导,请参阅Jupyter 文档。
数据科学配置文件模板
配置文件允许您根据当前项目或任务快速切换扩展、设置和 UI 布局。为了帮助您开始使用 Jupyter Notebooks,您可以使用数据科学配置文件模板,这是一个精选的配置文件,包含有用的扩展、设置和代码片段。您可以直接使用配置文件模板,或将其作为起点进一步自定义以满足您自己的工作流程。
您可以通过 配置文件 > 创建配置文件... 下拉菜单选择配置文件模板。
选择配置文件模板后,您可以查看设置和扩展,并移除您不想包含在新配置文件中的单个项目。根据模板创建新配置文件后,对设置、扩展或 UI 所做的更改将保留在您的配置文件中。