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