VS Code 中的 Jupyter Notebook
Jupyter(前身为 IPython Notebook)是一个开源项目,可让您在一个称为“notebook”的画布上轻松组合 Markdown 文本和可执行的 Python 源代码。Visual Studio Code 原生支持处理 Jupyter Notebook,并且支持通过 Python 代码文件进行处理。本主题涵盖了 Jupyter Notebook 的原生支持,并演示了如何
- 创建、打开和保存 Jupyter Notebook
- 处理 Jupyter 代码单元格
- 使用变量资源管理器和数据查看器查看、检查和过滤变量
- 连接到远程 Jupyter 服务器
- 调试 Jupyter Notebook
设置您的环境
要处理 Jupyter Notebook 中的 Python,您必须在 VS Code 中激活 Anaconda 环境,或激活您已安装 Jupyter 包的另一个 Python 环境。要选择环境,请使用命令面板中的“Python: Select Interpreter”命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))。
激活相应的环境后,您可以创建和打开 Jupyter Notebook,连接到远程 Jupyter 服务器以运行代码单元格,并将 Jupyter Notebook 导出为 Python 文件。
工作区信任
开始使用 Jupyter Notebook 时,您需要确保您正在受信任的工作区中工作。有害代码可能嵌入在 Notebooks 中,而 工作区信任功能允许您指示哪些文件夹及其内容可以或限制自动代码执行。
如果您在 VS Code 处于不受信任的工作区中并运行 受限模式时尝试打开 Notebook,您将无法执行单元格,并且富输出将被隐藏。
创建或打开 Jupyter Notebook
您可以通过从命令面板运行“Create: New Jupyter Notebook”命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))或在工作区中创建新的 .ipynb 文件来创建 Jupyter Notebook。

接下来,在右上方使用内核选择器选择一个内核。

选择内核后,每个代码单元格右下角的语言选择器将自动更新为内核支持的语言。

如果您有一个现有的 Jupyter Notebook,可以通过右键单击文件并选择 VS Code 打开,或者通过 VS Code 文件资源管理器来打开它。
运行单元格
运行单个代码单元格
添加代码后,您可以使用单元格左侧的“Run”图标来运行一个单元格,输出将显示在代码单元格下方。

要运行选定的代码单元格,您还可以使用命令模式和编辑模式下的键盘快捷键。 Ctrl+Enter 运行当前选定的单元格。 Shift+Enter 运行当前选定的单元格,并在其下方立即插入一个新单元格(焦点移至新单元格)。 Alt+Enter 运行当前选定的单元格,并在其下方立即插入一个新单元格(焦点保留在当前单元格)。
运行多个代码单元格
运行多个代码单元格有多种方法。您可以使用 Notebook 编辑器主工具栏中的双箭头来运行 Notebook 中的所有单元格,或者通过选择当前代码单元格上方或下方的“Run All”、“Run All Above”或“Run All Below”来运行。

在节中运行单元格
为了更轻松地运行 Notebook 中相关的单元格,您可以通过“Run Cells in Section”操作来运行由 Markdown 部分标题分组在一起的单元格。此操作在 Notebook 的大纲视图和粘滞滚动元素中可用。
在粘滞滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作来运行该节。在大纲视图中,选择悬停或选择时出现工具栏图标,然后通过提供的操作来运行单个单元格或一组单元格。
保存您的 Jupyter Notebook
您可以使用键盘快捷键 Ctrl+S 或通过“File”>“Save”来保存您的 Jupyter Notebook。
导出您的 Jupyter Notebook
您可以将 Jupyter Notebook 导出为 Python 文件 (.py)、PDF 或 HTML 文件。要导出,请在主工具栏上选择“...”>“Export”。然后,您会看到一个包含文件格式选项的下拉菜单。

注意: 对于 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 也可以移动一个或多个选定的单元格。
删除代码单元格
要删除代码,可以使用代码单元格工具栏中的“Delete”图标。当选定的代码单元格处于命令模式时,您可以使用键盘快捷键 dd。

撤销上次更改
您可以使用 z 键撤销之前的更改,例如,如果您进行了意外的编辑,可以将其恢复到以前的正确状态,或者如果您意外删除了一个单元格,可以恢复它。
在代码和 Markdown 之间切换
Notebook 编辑器允许您轻松地在 Markdown 和代码之间更改代码单元格。选择单元格右下角的语言选择器将允许您在 Markdown 和(如果适用)选定内核支持的任何其他语言之间切换。

您还可以使用键盘更改单元格类型。当一个单元格被选中且处于命令模式时,按下 M 键将单元格类型切换为 Markdown,按下 Y 键将单元格类型切换为代码。
设置 Markdown 后,您可以在代码单元格中输入 Markdown 格式的内容。

要渲染 Markdown 单元格,可以选择单元格工具栏中的勾选标记,或使用键盘快捷键 Ctrl+Enter 和 Shift+Enter。


清除输出或重启/中断内核
如果您想清除所有代码单元格的输出或重启/中断内核,可以使用主 Notebook 编辑器工具栏来实现。

启用/禁用行号
当您处于命令模式时,可以使用 L 键启用或禁用单个代码单元格内的行号。

要切换整个 Notebook 的行号,请在任何单元格处于命令模式时使用 Shift+L。

目录
要导航您的 Notebook,请在活动栏中打开文件资源管理器。然后,在侧边栏中打开“Outline”选项卡。

您可以使用大纲视图中的筛选器控件来包含 Markdown 标题、代码单元格和代码单元格符号。筛选器对应于以下设置
notebook.outline.showMarkdownHeadersOnlynotebook.outline.showCodeCellsnotebook.outline.showCodeCellSymbols
注意: 默认情况下,大纲只会显示 Markdown。要显示代码单元格,请启用以下设置:Notebook > Outline: Show Code Cells。
Jupyter Notebook 编辑器中的 IntelliSense 支持
Python Jupyter Notebook 编辑器窗口具有完整的 IntelliSense 功能——代码补全、成员列表、方法快速信息和参数提示。您在 Notebook 编辑器窗口中的输入效率与在代码编辑器中的一样高。

变量资源管理器和数据查看器
在 Python Notebook 中,可以查看、检查、排序和过滤当前 Jupyter 会话中的变量。通过在运行代码和单元格后选择主工具栏中的“Variables”图标,您将看到当前变量的列表,该列表会随着变量在代码中的使用而自动更新。变量窗格将打开在 Notebook 的底部。


数据查看器
有关变量的更多信息,您还可以双击一行或使用变量旁边的“Show variable in data viewer”按钮在数据查看器中更详细地查看变量。

或者,您可以使用其他扩展提供的的数据查看体验,例如 Data Wrangler。Data Wrangler 扩展提供了一个丰富的用户界面来显示数据洞察,并帮助您执行数据分析、质量检查、转换等操作。在我们的文档中了解有关 Data Wrangler 扩展的更多信息。
过滤行
可以通过在每列顶部的文本框中输入内容来过滤数据查看器中的行。输入您要搜索的字符串,将找到该字符串在该列中的任何行。

如果您想查找精确匹配,请在过滤器前加上 '='

可以通过键入 正则表达式进行更复杂的过滤

保存绘图
要从 Notebook 中保存绘图,只需将鼠标悬停在输出上,然后选择右上角的“Save”图标。

注意: 支持渲染使用 matplotlib 和 Altair 创建的绘图。
自定义 Notebook 差异
在底层,Jupyter Notebook 是 JSON 文件。JSON 文件中的片段被渲染为单元格,这些单元格由三个组件组成:输入、输出和元数据。使用基于行的差异来比较 Notebook 中所做的更改是困难且难以解析的。Notebook 的富差异编辑器可让您轻松查看单元格每个组件的更改。
您甚至可以自定义要在差异视图中显示的更改类型。在右上角的工具栏中选择溢出菜单项,以自定义您想要包含的单元格组件。输入差异将始终显示。

要了解有关 VS Code 中 Git 集成的更多信息,请访问 VS Code 中的 源代码管理。
调试 Jupyter Notebook
有两种不同的方法可以调试 Jupyter Notebook:一种更简单的模式称为“逐行运行”,以及全调试模式。
注意: 这两项功能都需要 ipykernel 6+。有关安装或升级 ipykernel 的详细信息,请参阅 此 Wiki 页面。
逐行运行
逐行运行允许您一次执行一个单元格中的一行,而不会被其他 VS Code 调试功能分心。开始时,选择单元格工具栏中的“Run by Line”按钮。

使用相同的按钮按语句前进。您可以选择单元格的“Stop”按钮提前停止,或使用工具栏中的“Continue”按钮继续运行到单元格末尾。
调试单元格
如果您想使用 VS Code 中支持的全部调试功能,例如断点以及步入其他单元格和模块的功能,则可以使用完整的 VS Code 调试器。
- 首先,通过单击 Notebook 单元格的左边距来设置任何需要的断点。
- 然后,选择“Run”按钮旁边的菜单中的“Debug Cell”按钮。这将会在调试会话中运行该单元格,并在任何运行的代码(即使是在另一个单元格或
.py文件中)的断点处暂停。 - 您可以像在 VS Code 中一样使用调试视图、调试控制台以及调试工具栏中的所有按钮。
请注意,调试 Jupyter Notebook 中的单元格不使用 launch.json 中的任何调试配置。相反,它可以通过 jupyter.debugJustMyCode 等设置进行自定义。

搜索 Notebook
您可以使用键盘快捷键 Ctrl/Cmd + F 来搜索 Notebook(或其部分,通过筛选搜索选项)。单击筛选器选项(漏斗图标)以跨以下内容进行搜索
- Markdown 单元格输入 (Markdown Source)
- Markdown 单元格输出 (Rendered Markdown)
- 代码单元格输入 (Code Cell Source)
- 代码单元格输出 (Cell Output)
默认情况下,Notebook 搜索仅筛选单元格输入。

连接到远程 Jupyter 服务器
通过连接到远程 Jupyter 服务器,您可以将 Jupyter Notebook 中的密集计算卸载到其他计算机。连接后,代码单元格将在远程服务器而不是本地计算机上运行。
连接到远程 Jupyter 服务器
-
打开 Notebook 右上角的内核选择器按钮(或从命令面板运行“Notebook: Select Notebook Kernel”命令)。

-
选择“Existing Jupyter Server”选项以连接到现有的 Jupyter 服务器。

-
要第一次连接到现有服务器,请选择“Enter the URL of the running Jupyter server”。

-
当提示输入“Enter the URL of the running Jupyter server”时,提供服务器的 URI(主机名)以及包含在
?token=URL 参数中的身份验证令牌。(如果您在 VS Code 终端中启动了启用了身份验证令牌的服务器,则带有令牌的 URL 通常会出现在终端输出中,您可以从中复制。)或者,在提供 URI 后,您可以指定用户名和密码。
注意: 为了提高安全性,Microsoft 建议为您的 Jupyter 服务器配置安全措施,例如 SSL 和令牌支持。这有助于确保发送到 Jupyter 服务器的请求经过身份验证,并且与远程服务器的连接已加密。有关保护 Notebook 服务器的指导,请参阅 Jupyter 文档。
数据科学配置文件模板
配置文件可让您根据当前项目或任务快速切换扩展、设置和 UI 布局。为了帮助您开始使用 Jupyter Notebook,您可以使用 数据科学配置文件模板,这是一个精选的配置文件,包含有用的扩展、设置和代码片段。您可以按原样使用配置文件模板,也可以将其作为起点,根据您的工作流程进一步自定义。
您通过“**配置文件**”>“**创建配置文件...**”下拉菜单选择一个配置文件模板

一旦你选择了一个配置文件模板,你可以审查其设置和扩展,并且如果你不想将某些项包含在新配置文件中,可以单独移除它们。基于模板创建新配置文件后,对设置、扩展或 UI 所做的更改将持久化在你的配置文件中。