Jupyter 笔记本在 VS Code 中
Jupyter(前称IPython Notebook)是一个开源项目,允许你轻松将Markdown文本和可执行的Python源代码组合在一个称为笔记本的画布上。Visual Studio Code 支持原生使用 Jupyter 笔记本(通过 Jupyter 扩展),也支持通过 Python 代码文件。本主题涵盖了 Jupyter Notebooks 的原生支持,并演示如何:
- 创建、打开并保存Jupyter笔记本
- 与Jupyter码单元的工作
- 使用变量浏览器和数据查看器查看、检查和过滤变量
- 连接到远程Jupyter服务器
- 调试Jupyter笔记本
搭建你的环境
要在 Jupyter Notebooks 中使用 Python,你必须在 VS Code 中激活 Anaconda 环境,或者在你安装了 Jupyter 包的其他 Python 环境中激活。要选择环境,请使用命令面板中的 Python: Select 解释器命令(⇧⌘P(Windows,Linux Ctrl+Shift+P))。
一旦激活了相应环境,你可以创建并打开 Jupyter 笔记本,连接到远程 Jupyter 服务器运行代码单元,并将 Jupyter 笔记本导出为 Python 文件。
环境变量
环境变量是从.env档案。请参见Python环境文档中的那一部分。
工作空间信托
开始使用 Jupyter Notebooks 时,你需要确保自己在一个值得信赖的工作环境中工作。有害代码可以嵌入笔记本中,Workspace Trust功能允许你指定哪些文件夹及其内容应支持或限制自动代码执行。
如果你在VS Code处于不受信任且运行限制模式的工作区时尝试打开笔记本,你将无法执行单元格,富输出也会被隐藏。
创建或打开Jupyter笔记本
您可以通过命令面板中运行“创建:新 Jupyter 笔记本”命令(⇧⌘P(Windows,Linux Ctrl+Shift+P))或创建一个新 Jupyter 笔记本来创建 Jupyter 笔记本.ipynb在你的工作区里。

接着,使用右上角的内核选择器选择一个内核。

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

如果你已有 Jupyter 笔记本,可以通过右键点击文件并用 VS Code 打开,或者通过 VS Code 文件资源管理器打开它。
运行单元
运行一个代码单元
代码添加后,你可以用单元格左侧的“运行”图标运行一个单元格,输出会显示在代码单元下方。

要运行选定的代码单元格,你也可以在命令和编辑模式下使用快捷键。Ctrl+Enter 键运行当前选中的单元格。Shift+Enter 运行当前选中的单元格,并立即在下方插入一个新单元格(焦点移到新单元格)。Alt+Enter 运行当前选中的单元格,并在下方插入一个新单元格(焦点仍停留在当前单元格上)。
运行多个代码单元
运行多个代码单元可以通过多种方式实现。您可以使用笔记本编辑器主工具栏中的双箭头来运行笔记本内的所有单元格,或者选择当前代码单元格的“全部运行”、“以上全部运行”或“以下全部运行”。

截面中的运行单元
为了更方便地在笔记本中运行相关单元格,你可以使用“在节中运行单元格”动作,这些单元通过标记下的部分头部分组。该动作可在笔记本大纲视图和粘性卷轴元素中使用。
在粘贴滚动元素中,右键点击你选择的标题,然后通过上下文菜单中的动作执行该部分。在大纲视图中,选择悬停或选择时出现的工具栏图标,然后通过展示的作运行单个单元格或单元格段。
保存你的Jupyter笔记本
你可以用键盘快捷键Ctrl+S或文件>保存保存Jupyter笔记本。
导出你的Jupyter笔记本
你可以导出 Jupyter Notebook 作为 Python 文件 (.py),PDF或HTML文件。要导出,请在主工具栏选择......>导出。接着会弹出一个文件格式选项的下拉菜单。

注:导出PDF时,必须安装TeX。如果没有,选择PDF选项时会提示你需要安装。另外,请注意,如果你笔记本里有仅SVG的输出,PDF里不会显示。要在 PDF 中拥有 SVG 图形,要么确保输出包含非 SVG 图像格式,要么先导出成 HTML,然后用浏览器保存为 PDF。
在笔记本编辑器中处理代码单元
笔记本编辑器让你轻松创建、编辑和运行 Jupyter 笔记本中的代码单元。
创建一个代码单元
默认情况下,空白笔记本会有一个空代码单元供你开始使用,而现有笔记本则会在底部放置一个代码单元。把你的代码添加到空代码单元开始。
msg = "Hello world"
print(msg)

码单元模式
在处理代码单元时,单元可以处于三种状态:未选中、命令模式和编辑模式。代码单元和编辑器边界左侧的竖条显示该单元格的当前状态。当没有显示条时,该单元格被取消选择。当选中单元格时,可以处于命令模式或编辑模式。

在命令模式下,单元格左侧会出现一个实心竖条。该单元可以作并接受键盘命令。

在编辑模式下,实心竖线被单元格编辑器周围的边框连接。单元格的内容(代码或标记)可以被修改。

切换模式时,您可以使用键盘或鼠标。在键盘上,按回车键进入编辑模式,按 Esc 键进入命令模式。用鼠标点击单元格左侧的竖条,或代码单元格内代码/Markdown 区域外的竖条。
添加额外的代码单元
你可以用主工具栏、某个单元的添加单元格工具栏(悬停时可见)以及键盘命令添加代码单元格。

要在当前选中的单元格下方添加新单元格,可以使用主工具栏中的加号图标或单元格的悬停工具栏。
当代码单元格处于命令模式时,使用A键在所选单元格上方添加一个单元格,B键在所选单元格下方添加单元格。
选择一个代码单元
你可以用鼠标或键盘上的上下方向键更改所选代码单元格。当代码单元处于命令模式时,你也可以使用J键(向下)和K键(向上)。
选择多个代码单元
要选择多个单元格,先从一个单元处于选定模式开始。填充背景表示已选中的单元格。要选择连续的单元格,按住Shift键,点击你想选的最后一个单元格。要选择任意一组单元格,按住Ctrl键,点击你想添加到选择中的单元格。

移动代码单元
你可以通过拖放在笔记本内上下移动单元格。对于代码单元格,拖放区域位于单元编辑器的左侧,如下所示。对于渲染的Markdown单元格,你可以点击任意位置拖拽单元格。

要移动多个单元格,你可以在选择中包含的任意单元中使用相同的拖拽区域。
键盘快捷键Alt+Arrow还可以移动一个或多个选中的单元格。
删除代码单元
要删除代码,可以用代码单元工具栏里的“删除”图标。当所选代码单元处于命令模式时,可以使用键盘快捷键dd。

撤销你上一次的更改
你可以用Z键撤销之前的更改,比如如果你不小心编辑了,可以恢复到之前正确的状态;或者如果你不小心删除了单元格,可以恢复它。
在代码和Markdown之间切换
Notebook 编辑器允许你轻松在 Markdown 和代码之间切换代码单元。选择单元格右下角的语言选择器,可以让你在 Markdown 和(如适用)选择内核支持的其他语言之间切换。

你也可以用键盘更改单元类型。当选中单元格并处于命令模式时,M键将单元类型切换为Markdown,Y键切换单元类型为代码。
Markdown设置好后,你可以在代码单元格中输入Markdown格式的内容。

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


清除输出或重启/中断内核
如果你想清除所有代码单元输出或重启/中断内核,可以用主笔记本编辑器工具栏实现。

启用/禁用线号
在命令模式下,你可以用 L 键在单个代码单元内启用或关闭行号。

要切换整个笔记本的行号,请在任意单元格的命令模式下使用 Shift+L。

目录
要浏览笔记本,请在活动栏打开文件资源管理器。然后在侧边栏打开大纲标签。

你可以在大纲视图中使用筛选控件,包含Markdown头、代码单元和代码单元符号。这些过滤器对应于以下设置:
notebook.outline.showMarkdownHeadersOnlynotebook.outline.showCodeCellsnotebook.outline.showCodeCellSymbols
注:默认情况下,大纲只显示Markdown。要显示代码单元格,请启用以下设置:笔记本>大纲:显示代码单元。
Jupyter 笔记本编辑器中的 IntelliSense 支持。
Python Jupyter 笔记本编辑器窗口包含完整的 IntelliSense——代码补全、成员列表、方法快速信息和参数提示。你可以在笔记本编辑器窗口中打字,和在代码编辑器里打字一样高效。

变量浏览器与数据查看器
在 Python 笔记本中,你可以查看、检查、排序和过滤当前 Jupyter 会话中的变量。在运行代码和单元格后,选择主工具栏中的变量图标,你会看到当前变量列表,随着变量在代码中使用,列表会自动更新。变量面板会在笔记本底部打开。


数据查看器
如需了解更多关于变量的信息,您也可以双击某行,或使用变量旁的“显示数据查看器”按钮,查看数据查看器中更详细的变量视图。

或者,你也可以使用像Data Wrangler这样其他扩展提供的数据查看体验。Data Wrangler 扩展提供了丰富的用户界面,展示对数据的洞察,并帮助你进行数据分析、质量检查、转换等作。在我们的文档中了解更多关于Data Wrangler扩展的信息。
过滤行
在数据查看器中,可以通过在每列顶部输入文本框来过滤行。输入你想搜索的字符串,列中包含该字符串的行都会被找到:

如果你想找到完全匹配的,可以在滤波器前加上“=”作为前缀:

更复杂的过滤可以通过输入正则表达式来实现:

拯救地块
要从笔记本保存图,只需将鼠标悬停在输出上,选择右上角的“保存”图标。

注:支持用 matplotlib 和 Altair 创建的图渲染。
定制笔记本差异化
Jupyter Notebook本质上是JSON文件。JSON 文件中的段被渲染为由三个组件组成的单元格:输入、输出和元数据。用基于行线的微分比较笔记本中所做的更改既困难又难以解析。丰富的笔记本差分编辑器让你轻松看到单元格每个组件的变化。
你甚至可以自定义想要在不同视图中显示哪些类型的更改。在右上角,选择工具栏中的溢出菜单项,自定义你想包含的单元组件。输入差异总是会显示出来。

想了解更多关于VS Code中的Git集成,请访问VS Code中的源代码控制。
调试Jupyter笔记本
调试Jupyter笔记本有两种方式:一种是更简单的“按行运行”模式,另一种是完整的调试模式。
注:这两项功能都需要 ipykernel 6+。关于安装或升级ipykernel的详细信息,请参见这个维基页面。
线路运行
按行运行让你可以逐行执行单元格,不会被其他 VS Code 调试功能干扰。开始时,选择单元格工具栏中的“按行运行”按钮:

用同一个按钮前进一个语句。你可以选择单元格的“停止”按钮提前停止,或者在工具栏中选择继续按钮继续跑到单元格的尽头。
调试单元
如果你想使用VS Code支持的全部调试功能,比如断点以及介入其他单元和模块的能力,可以使用完整的VS Code调试器。
- 首先,点击笔记本单元格的左边框设置你需要的断点。
- 然后在菜单中运行按钮旁边的调试单元按钮。它会在调试会话中运行该单元格,并且在任何运行的代码断点处都会暂停,即使它在不同的单元格或
.py档案。 - 你可以像在 VS Code 里一样使用调试视图、调试控制台和调试工具栏里的所有按钮。
注意,Jupyter 笔记本中的调试单元不使用 launch.json 中的任何调试配置。它可以通过以下设置进行自定义jupyter.debugJustMyCode.

通过笔记本搜索
你可以通过快捷键 Ctrl/Cmd + F 在笔记本(或部分内容)中搜索。点击筛选选项(漏斗图标)以搜索:
- Markdown 单元输入(Markdown 源代码)
- Markdown 单元输出(渲染 Markdown)
- 代码单元输入(代码单元源代码))
- 代码单元输出(单元输出)
笔记本搜索默认只过滤了单元格输入。

连接到远程Jupyter服务器
你可以通过连接远程的 Jupyter 服务器,将 Jupyter 笔记本中的高计算工作卸载给其他计算机。连接后,代码单元运行在远程服务器上,而非本地计算机。
连接远程Jupyter服务器:
-
打开笔记本右上角的内核选择器按钮(或从命令面板中执行笔记本:选择笔记本内核命令)。

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

-
首次连接现有服务器时,请选择输入运行中的Jupyter服务器的URL。

-
当被要求输入运行中的 Jupyter 服务器的 URL 时,提供服务器的 URI(主机名)以及包含认证令牌的
?token=URL 参数。(如果你在VS Code终端启动服务器并启用认证令牌,带令牌的URL通常会出现在终端输出中,你可以从中复制它。)或者,你也可以在提供URI后指定用户名和密码。
注:为了增强安全性,Microsoft建议在Jupyter服务器上配置安全措施,如SSL和令牌支持。这有助于确保发送到Jupyter服务器的请求得到认证,并且与远程服务器的连接得到加密。有关如何保护笔记本服务器的指导,请参阅 Jupyter 文档。
数据科学配置文件模板
配置文件可以让你根据当前项目或任务快速切换扩展、设置和界面布局。为了帮助你开始使用 Jupyter Notebooks,可以使用数据科学配置文件模板,这是一个经过精心策划的配置文件,包含有用的扩展、设置和片段。你可以直接使用配置文件模板,也可以作为起点,进一步定制自己的工作流程。
你可以通过个人资料>创建个人资料......下拉菜单选择模板:

一旦你选择了个人资料模板,可以查看设置和扩展,如果你不想把单个项目包含在新资料中,可以移除它们。根据模板创建新配置文件后,设置、扩展或界面的更改会保留在你的配置文件中。