🚀 在 VS Code 中

VS Code 中的 Jupyter 笔记本

Jupyter(前身是 IPython Notebook)是一个开源项目,可让您在一个称为**笔记本**的画布上轻松组合 Markdown 文本和可执行的 Python 源代码。Visual Studio Code 原生支持使用 Jupyter Notebooks,并通过 Python 代码文件提供支持。本主题介绍 Jupyter Notebooks 的原生支持,并演示如何

  • 创建、打开和保存 Jupyter 笔记本
  • 使用 Jupyter 代码单元格
  • 使用变量资源管理器和数据查看器查看、检查和筛选变量
  • 连接到远程 Jupyter 服务器
  • 调试 Jupyter 笔记本

设置您的环境

要在 Jupyter Notebooks 中使用 Python,您必须在 VS Code 中激活 Anaconda 环境,或安装了 Jupyter 包的另一个 Python 环境。要选择环境,请使用命令面板中的“Python: 选择解释器”命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))。

激活适当的环境后,您可以创建和打开 Jupyter 笔记本,连接到远程 Jupyter 服务器以运行代码单元格,并将 Jupyter 笔记本导出为 Python 文件。

工作区信任

在开始使用 Jupyter Notebooks 时,您需要确保在受信任的工作区中工作。有害代码可能嵌入在笔记本中,“工作区信任”功能允许您指示哪些文件夹及其内容应允许或限制自动代码执行。

如果您尝试在 VS Code 处于运行“受限模式”的不可信工作区中打开笔记本,您将无法执行单元格,并且富输出将被隐藏。

创建或打开 Jupyter 笔记本

您可以通过从命令面板运行“⇧⌘P (Windows, Linux Ctrl+Shift+P)”中的“创建: 新建 Jupyter 笔记本”命令或在您的工作区中创建新的 .ipynb 文件来创建 Jupyter 笔记本。

Blank Jupyter Notebook

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

Kernel Picker

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

Language Picker

如果您有现有的 Jupyter 笔记本,您可以通过右键单击文件并使用 VS Code 打开,或通过 VS Code 文件资源管理器打开它。

运行单元格

运行单个代码单元格

添加代码后,您可以使用单元格左侧的“运行”图标运行单元格,输出将显示在代码单元格下方。

Run Jupyter code cell

要运行选定的代码单元格,您还可以在命令模式和编辑模式下使用键盘快捷键。Ctrl+Enter 运行当前选定的单元格。Shift+Enter 运行当前选定的单元格并在正下方插入一个新单元格(焦点移动到新单元格)。Alt+Enter 运行当前选定的单元格并在正下方插入一个新单元格(焦点保留在当前单元格)。

运行多个代码单元格

运行多个代码单元格可以通过多种方式完成。您可以使用笔记本编辑器主工具栏中的双箭头来运行笔记本中的所有单元格,或者通过在当前代码单元格上方或下方选择“全部运行”、“运行上方所有单元格”或“运行下方所有单元格”。

Run multiple code cells

运行节中的单元格

为了更轻松地运行笔记本中的相关单元格,您可以使用“运行节中的单元格”操作来运行由 markdown 节标题分组在一起的单元格。此操作在笔记本大纲视图和粘滞滚动元素上可用。

在粘滞滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作运行该节。在大纲视图中,选择悬停或选择时出现的工具栏图标,然后通过显示的操作运行单个单元格或单元格节。

保存您的 Jupyter 笔记本

您可以使用键盘快捷键 Ctrl+S 或“文件”>“保存”来保存您的 Jupyter 笔记本。

导出您的 Jupyter 笔记本

您可以将 Jupyter 笔记本导出为 Python 文件 (.py)、PDF 或 HTML 文件。要导出,请在主工具栏上选择“...”>“导出”。然后,您将看到文件格式选项的下拉列表。

Convert Jupyter Notebook to Python file

注意: 对于 PDF 导出,您必须安装 TeX。如果您没有安装,当您选择 PDF 选项时,您将收到需要安装它的通知。另请注意,如果您的笔记本中有仅 SVG 输出,它们将不会显示在 PDF 中。要在 PDF 中包含 SVG 图形,请确保您的输出包含非 SVG 图像格式,或者您可以先导出为 HTML,然后使用浏览器另存为 PDF。

在笔记本编辑器中使用代码单元格

笔记本编辑器使您可以轻松地在 Jupyter 笔记本中创建、编辑和运行代码单元格。

创建代码单元格

默认情况下,空白笔记本将有一个空的起始代码单元格,现有笔记本将在底部放置一个。将您的代码添加到空代码单元格以开始使用。

msg = "Hello world"
print(msg)

Simple Jupyter code cell

代码单元格模式

在使用代码单元格时,单元格可以处于三种状态:未选中、命令模式和编辑模式。代码单元格和编辑器边框左侧的垂直条显示单元格的当前状态。当没有条可见时,单元格未被选中。当单元格被选中时,它可以处于命令模式或编辑模式。

Unselected Jupyter code cell

在命令模式下,单元格左侧将出现一条实心垂直条。可以对单元格进行操作并接受键盘命令。

Code cell in command mode

在编辑模式下,实心垂直条与单元格编辑器周围的边框相连。可以修改单元格的内容(代码或 Markdown)。

Code cell in edit mode

要切换模式,您可以使用键盘或鼠标。在键盘上,按 Enter 键移动到编辑模式,或按 Esc 键移动到命令模式。使用鼠标,单击单元格左侧的垂直条或代码单元格中代码/Markdown 区域之外的区域。

添加其他代码单元格

您可以使用主工具栏、单元格的添加单元格工具栏(悬停时可见)以及通过键盘命令添加代码单元格。

Add code cells

要在当前选定单元格下方添加新单元格,请使用主工具栏中的加号图标或单元格的悬停工具栏。

当代码单元格处于命令模式时,使用 A 键在上方添加单元格,使用 B 键在选定单元格下方添加单元格。

选择代码单元格

您可以使用鼠标或键盘上的向上/向下箭头键更改选定的代码单元格。当代码单元格处于命令模式时,您还可以使用 J 键(向下)和 K 键(向上)。

选择多个代码单元格

要选择多个单元格,请从选定模式下的一个单元格开始。填充背景表示选定的单元格。要选择连续的单元格,请按住 Shift 键并单击要选择的最后一个单元格。要选择任何一组单元格,请按住 Ctrl 键并单击要添加到选择中的单元格。

Multiselected cells

移动代码单元格

您可以通过拖放来在笔记本中向上或向下移动单元格。对于代码单元格,拖放区域位于单元格编辑器左侧,如下所示。对于呈现的 Markdown 单元格,您可以单击任何位置来拖放单元格。

Move a code cell

要移动多个单元格,您可以使用选择中包含的任何单元格中的相同拖放区域。

键盘快捷键 Alt+Arrow 也移动一个或多个选定的单元格。

删除代码单元格

要删除代码,您可以使用代码单元格工具栏中的“删除”图标。当选定的代码单元格处于命令模式时,您可以使用键盘快捷键 dd

Delete a code cell

撤销上次更改

您可以使用 z 键撤销之前的更改,例如,如果您进行了意外的编辑,您可以将其撤销到之前的正确状态,或者如果您意外删除了一个单元格,您可以恢复它。

在代码和 Markdown 之间切换

笔记本编辑器允许您轻松地在 Markdown 和代码之间更改代码单元格。选择单元格右下角的语言选择器将允许您在 Markdown 和(如果适用)所选内核支持的任何其他语言之间切换。

Change language

您还可以使用键盘更改单元格类型。当单元格被选中且处于命令模式时,M 键将单元格类型切换为 Markdown,Y 键将单元格类型切换为代码。

设置 Markdown 后,您可以将 Markdown 格式的内容输入到代码单元格中。

Raw Markdown displayed in code cell

要呈现 Markdown 单元格,您可以选择单元格工具栏中的复选标记,或使用键盘快捷键 Ctrl+EnterShift+Enter

How to render Markdown

Rendered Markdown displayed in code cell

清除输出或重启/中断内核

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

Notebook Toolbar

启用/禁用行号

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

Line numbers enabled in code cell

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

Line numbers enabled for notebook

目录

要在笔记本中导航,请打开活动栏中的文件资源管理器。然后打开侧边栏中的“大纲”选项卡。

Table of contents

您可以使用大纲视图中的筛选器控件来包含 Markdown 标头、代码单元格和代码单元格符号。筛选器对应于以下设置

  • notebook.outline.showMarkdownHeadersOnly
  • notebook.outline.showCodeCells
  • notebook.outline.showCodeCellSymbols

注意: 默认情况下,大纲仅显示 Markdown。要显示代码单元格,请启用以下设置:“笔记本 > 大纲: 显示代码单元格”。

Jupyter 笔记本编辑器中的 IntelliSense 支持

Python Jupyter 笔记本编辑器窗口具有完整的 IntelliSense – 代码补全、成员列表、方法快速信息和参数提示。您可以在笔记本编辑器窗口中像在代码编辑器中一样高效地进行键入。

IntelliSense support

变量资源管理器和数据查看器

在 Python 笔记本中,可以查看、检查、排序和筛选当前 Jupyter 会话中的变量。通过在运行代码和单元格后选择主工具栏中的“变量”图标,您将看到当前变量的列表,这些变量将在代码中使用时自动更新。变量窗格将在笔记本底部打开。

Variable Explorer

Variable Explorer

数据查看器

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

Data Viewer

或者,您可以使用其他扩展(如 Data Wrangler)提供的数据查看体验。Data Wrangler 扩展提供了一个丰富的用户界面,以显示有关您的数据的见解,并帮助您执行数据分析、质量检查、转换等。在我们的文档中了解有关 Data Wrangler 扩展的更多信息

筛选行

可以通过在每列顶部的文本框中键入内容来完成数据查看器中的筛选行。键入要搜索的字符串,将找到列中包含该字符串的任何行

Data Viewer

如果您想查找完全匹配项,请在筛选器前缀中使用“=”

Data Viewer

更复杂的筛选可以通过键入 正则表达式来完成

Data Viewer

保存绘图

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

Save output

注意: 支持呈现使用 matplotlibAltair 创建的绘图。

自定义笔记本差异比较

在幕后,Jupyter Notebooks 是 JSON 文件。JSON 文件中的段被呈现为由三个组件组成的单元格:输入、输出和元数据。使用基于行的差异比较笔记本中所做的更改很困难且难以解析。笔记本的富差异比较编辑器允许您轻松查看单元格每个组件的更改。

您甚至可以自定义要在差异比较视图中显示哪些类型的更改。在右上角,选择工具栏中的溢出菜单项,以自定义要包含的单元格组件。输入差异将始终显示。

Custom notebook diffing

要了解有关 VS Code 中 Git 集成的更多信息,请访问 VS Code 中的源代码管理

调试 Jupyter 笔记本

有两种不同的方法来调试 Jupyter 笔记本:一种更简单的方式称为“逐行运行”,以及完整调试模式。

注意: 这两个功能都需要 ipykernel 6+。有关安装或升级 ipykernel 的详细信息,请参阅此 wiki 页面

逐行运行

“逐行运行”允许您一次执行一个单元格中的一行代码,而不会被其他 VS Code 调试功能分散注意力。要开始,请选择单元格工具栏中的“逐行运行”按钮

Run by line button

使用相同的按钮前进一个语句。您可以选择单元格“停止”按钮提前停止,或选择工具栏中的“继续”按钮继续运行到单元格末尾。

调试单元格

如果您想使用 VS Code 中支持的完整调试功能集,例如断点以及步入其他单元格和模块的能力,您可以使用完整的 VS Code 调试器。

  1. 首先,通过单击笔记本单元格的左边距来设置您需要的任何断点。
  2. 然后选择“运行”按钮旁边菜单中的“调试单元格”按钮。这将在调试会话中运行单元格,并将在运行的任何代码中的断点处暂停,即使它位于不同的单元格或 .py 文件中。
  3. 您可以像在 VS Code 中通常那样使用“调试”视图、“调试控制台”和“调试工具栏”中的所有按钮。

请注意,在 jupyter 笔记本中调试单元格不使用 launch.json 中的任何调试配置。它可以改为通过诸如 jupyter.debugJustMyCode 之类的设置进行自定义。

Debug cell button

搜索笔记本

您可以使用键盘快捷键 Ctrl/Cmd + F 在笔记本中搜索(或通过筛选搜索选项搜索笔记本的一部分)。单击“筛选器”选项(漏斗图标)以跨以下内容搜索:

  • Markdown 单元格输入(Markdown 源代码
  • Markdown 单元格输出(呈现的 Markdown
  • 代码单元格输入(代码单元格源代码
  • 代码单元格输出(单元格输出

默认情况下,笔记本搜索仅筛选单元格输入。

Search options

连接到远程 Jupyter 服务器

您可以通过连接到远程 Jupyter 服务器,将 Jupyter 笔记本中的密集计算卸载到其他计算机。连接后,代码单元格将在远程服务器而不是本地计算机上运行。

连接到远程 Jupyter 服务器

  1. 打开笔记本右上角的“内核选择器”按钮(或从命令面板运行“笔记本: 选择笔记本内核”命令)。

    Notebook kernel picker

  2. 选择“现有 Jupyter 服务器”选项以连接到现有 Jupyter 服务器。

    Select existing Jupyter server

  3. 要首次连接到现有服务器,请选择“输入正在运行的 Jupyter 服务器的 URL”。

    Choose to connect to an existing server

  4. 当提示“输入正在运行的 Jupyter 服务器的 URL”时,请提供服务器的 URI(主机名),并将身份验证令牌包含在 ?token= URL 参数中。(如果您在启用了身份验证令牌的 VS Code 终端中启动服务器,则带有令牌的 URL 通常会出现在终端输出中,您可以从中复制它。)或者,您可以在提供 URI 后指定用户名和密码。

    Prompt to supply a Jupyter server URI

注意: 为了增加安全性,Microsoft 建议您使用 SSL 和令牌支持等安全预防措施来配置 Jupyter 服务器。这有助于确保发送到 Jupyter 服务器的请求已通过身份验证,并且与远程服务器的连接已加密。有关保护笔记本服务器的指南,请参阅 Jupyter 文档

数据科学配置文件模板

配置文件允许您根据当前项目或任务快速切换扩展、设置和 UI 布局。为了帮助您开始使用 Jupyter Notebooks,您可以使用“数据科学”配置文件模板,这是一个精选的配置文件,其中包含有用的扩展、设置和代码片段。您可以按原样使用配置文件模板,也可以将其用作起点,以便为自己的工作流程进一步自定义。

您可以通过“配置文件”>“创建配置文件...”下拉列表选择配置文件模板

Create Profile dropdown with profile templates

选择配置文件模板后,您可以查看设置和扩展,如果您不想将它们包含在新配置文件中,可以删除单个项目。根据模板创建新配置文件后,对设置、扩展或 UI 所做的更改将保留在您的配置文件中。