现已发布!阅读 10 月份的新功能和修复。

Python 交互式窗口

Jupyter(以前称为 IPython Notebook)是一个开源项目,允许您在一个名为**笔记本**的画布上轻松组合 Markdown 文本和可执行 Python 源代码。Visual Studio Code 支持通过 Python 代码文件以及原生方式与Jupyter 笔记本一起工作。本主题涵盖了通过 Python 代码文件提供的支持,并演示了如何

  • 使用类似 Jupyter 的代码单元
  • 在 Python 交互式窗口中运行代码
  • 使用变量资源管理器和数据查看器查看、检查和筛选变量
  • 连接到远程 Jupyter 服务器
  • 调试 Jupyter 笔记本
  • 导出 Jupyter 笔记本

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

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

Jupyter 代码单元

您使用# %% 注释在 Python 代码中定义类似 Jupyter 的代码单元

# %%
msg = "Hello World"
print(msg)

# %%
msg = "Hello again"
print(msg)

注意:确保将上面显示的代码保存到扩展名为 .py 的文件中。

当 Python 扩展检测到代码单元时,它会添加**运行单元**和**调试单元** CodeLens 修饰。第一个单元还包括**运行下方**,所有后续单元都包括**运行上方**

Jupyter adornments for code cells in the VS Code editor

注意:默认情况下,**调试单元**仅单步执行用户代码。如果要单步执行非用户代码,您需要在 Jupyter 扩展设置中取消选中**仅调试我的代码**(⌘,(Windows、Linux Ctrl+,)))。

**运行单元**仅适用于一个代码单元。**运行下方**(出现在第一个单元中)运行文件中所有的代码。**运行上方**适用于所有代码单元,直到但不包括带有修饰的单元。例如,您可以使用**运行上方**来初始化运行时环境,然后再运行该特定单元。

选择命令会启动 Jupyter(如果需要,这可能需要一分钟),然后在**Python 交互式**窗口中运行相应的单元。

Code cells running in a Python Interactive window

您也可以使用 (Ctrl+Enter) 或**Python:在 Python 终端中运行选择/行**命令 (Shift+Enter) 来运行代码单元。使用此命令后,Python 扩展会自动将光标移动到下一个单元。如果您位于文件中的最后一个单元,扩展会自动插入另一个# %% 分隔符以创建新单元,从而模仿 Jupyter 笔记本的行为。

您还可以单击行号左侧的边距来设置断点。然后,您可以使用**调试单元**来启动该代码单元的调试会话。调试器会在断点处停止执行,并允许您逐行单步执行代码并检查变量(有关详细信息,请参阅调试)。

其他命令和键盘快捷键

下表列出了在使用代码单元时支持的其他命令和键盘快捷键。

命令 键盘快捷键
Python:转到下一个单元 Ctrl+Alt+]
Python:转到上一个单元 Ctrl+Alt+[
Python:通过上面的单元扩展选择 Ctrl+Shift+Alt+[
Python:通过下面的单元扩展选择 Ctrl+Shift+Alt+]
Python:向上移动选定单元 Ctrl+; U
Python:向下移动选定单元 Ctrl+; D
Python:在上方插入单元 Ctrl+; A
Python:在下方插入单元 Ctrl+; B
Python:在位置下方插入单元 Ctrl+; S
Python:删除选定单元 Ctrl+; X
Python:将单元更改为代码 Ctrl+; C
Python:将单元更改为 Markdown Ctrl+; M

使用 Python 交互式窗口

上一节提到的**Python 交互式**窗口可以用作具有任意代码的独立控制台(使用代码单元或不使用代码单元)。要将窗口用作控制台,请使用命令面板中的**Jupyter:创建交互式窗口**命令打开它。然后,您可以输入代码,使用Enter转到新行,使用Shift+Enter运行代码。

要将窗口与文件一起使用,请使用命令面板中的**Jupyter:在 Python 交互式窗口中运行当前文件**命令。

IntelliSense

Python 交互式窗口具有完整的 IntelliSense 功能 - 代码补全、成员列表、方法的快速信息和参数提示。您在 Python 交互式窗口中输入代码时,可以像在代码编辑器中一样高效。

IntelliSense in the Python Interactive window

绘图查看器

绘图查看器使您能够更深入地处理绘图。在查看器中,您可以平移、缩放和导航当前会话中的绘图。您还可以将绘图导出为 PDF、SVG 和 PNG 格式。

在 Python 交互式窗口中,双击任何绘图以在查看器中打开它,或者选择绘图左上角的展开按钮。

Plot Viewer with the Python Interactive window

注意:Python 交互式窗口支持渲染使用 matplotlibAltair 创建的绘图。

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

在 Python 交互式窗口中,可以查看、检查和过滤当前 Jupyter 会话中的变量。在运行代码和单元格后,选择交互式窗口工具栏中的**变量**按钮以打开变量资源管理器,您将看到当前变量的列表,该列表将在代码中使用变量时自动更新。

Variables Explorer

有关变量的更多信息,您也可以双击一行或使用**在数据查看器中显示变量**按钮以在数据查看器中查看变量的更详细视图。打开后,您可以通过在行中搜索来过滤值。

Data Viewer

连接到远程 Jupyter 服务器

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

要连接到远程 Jupyter 服务器

  1. 从命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 运行**Jupyter:指定本地或远程 Jupyter 服务器以进行连接**命令。

  2. 选择您希望如何连接到 Jupyter 服务器。 提示提供 Jupyter 服务器 URI

  3. 如果在远程工作,请提供服务器的 URI(主机名),并在提示时包含具有 ?token= URL 参数的验证令牌。(如果您在 VS Code 终端中使用启用了验证令牌的服务器启动服务器,则带有令牌的 URL 通常会出现在您从中可以复制它的终端输出中。)或者,您可以在提供 URI 后指定用户名和密码。

    Prompt to supply a Jupyter server URI

  4. Python 交互式窗口通过显示 URI(在下面的图像中被模糊处理)来指示代码在何处运行

    The Python Interactive window showing that code is running on a remote Jupyter server

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

将 Jupyter 笔记本转换为 Python 代码文件

当您激活安装了 Jupyter 的环境后,您可以在 VS Code 中打开 Jupyter 笔记本文件(.ipynb),然后将其转换为 Python 代码。转换文件后,您可以像处理任何其他 Python 文件一样运行代码,也可以使用 VS Code 调试器。在 VS Code 中打开和调试笔记本是查找和解决代码错误的一种便捷方式,这在 Jupyter 笔记本中直接进行很困难。

当您打开笔记本文件时,Visual Studio Code 会自动在笔记本编辑器中打开它。使用工具栏上的转换图标将笔记本(.ipynb)文件转换为 Python 文件(.py)。

Icon to convert a Jupyter notebook file

选择转换图标,然后选择“Python 脚本”,等待几秒钟,然后 VS Code 在未命名的文件中打开转换后的笔记本。笔记本的单元格在 Python 文件中以 # %% 注释分隔;Markdown 单元格完全转换为以 # %% [markdown] 开头的注释,并在交互式窗口中以 HTML 格式呈现,与代码和输出(例如图形)并排显示

Jupyter notebook running in VS Code and the Python Interactive window

注意:第一次在 Python 文件中运行代码单元格时,Python 扩展会启动 Jupyter 服务器。服务器可能需要一些时间才能启动,并且**Python 交互式**窗口才能显示代码结果。

调试 Jupyter 笔记本

Visual Studio Code 调试器允许您逐步执行代码、设置断点、检查状态和分析问题。使用调试器是查找和更正笔记本代码中问题的一种有用方法。

  1. 在 VS Code 中,激活安装了 Jupyter 的 Python 环境,如本文开头所述。

  2. 如上一节所述,将笔记本的 .ipynb 文件导入 VS Code。(如果您使用的是基于云的 Jupyter 环境,例如 Azure Notebooks,请先下载该文件。)

  3. 要启动调试器,请使用以下选项之一

    • 对于整个笔记本,打开命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 并运行**Jupyter:在 Python 交互式窗口中调试当前文件**命令。
    • 对于单个单元格,请使用单元格上方显示的**调试单元格**修饰符。调试器专门从该单元格中的代码开始。默认情况下,**调试单元格**仅逐步进入用户代码。如果您想逐步进入非用户代码,则需要在 Jupyter 扩展设置中取消选中**仅调试我的代码** (⌘, (Windows、Linux Ctrl+,))。
  4. 要熟悉 VS Code 的通用调试功能,例如检查变量、设置断点和其他活动,请查看 VS Code 调试

  5. 当您发现问题时,请停止调试器、更正代码、保存文件,然后重新启动调试器。

  6. 当您对所有代码都正确感到满意时。保存文件,然后按以下部分所述导出笔记本。然后,您可以将笔记本上传到您的普通 Jupyter 环境。

导出 Jupyter 笔记本

除了打开 Jupyter 笔记本外,您还可以从命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中使用以下命令之一,将 VS Code 中 Python 文件的内容导出到 Jupyter 笔记本(扩展名为 .ipynb)。

  • Jupyter:将当前 Python 文件导出为 Jupyter 笔记本:使用 # %%# %% [markdown] 分隔符,从当前文件的内容创建 Jupyter 笔记本,以指定其各自的单元格类型。
  • Jupyter:导出当前 Python 文件和输出为 Jupyter 笔记本:从当前文件的内容创建 Jupyter 笔记本,并包括代码单元格的输出。
  • Jupyter:将交互式窗口导出为 Jupyter 笔记本:从 Python 交互式窗口的内容创建 Jupyter 笔记本。

导出内容后,VS Code 会显示一个提示,您可以通过该提示在浏览器中打开笔记本。