Python 交互式窗口
Jupyter(以前称为 IPython Notebook)是一个开源项目,它允许您在一个名为 notebook 的画布上轻松组合 Markdown 文本和可执行的 Python 源代码。Visual Studio Code 支持原生使用 Jupyter Notebooks,以及通过 Python 代码文件使用。本主题涵盖通过 Python 代码文件提供的支持,并演示如何
- 使用类似 Jupyter 的代码单元格
- 在 Python 交互式窗口中运行代码
- 使用变量资源管理器和数据查看器查看、检查和筛选变量
- 连接到远程 Jupyter 服务器
- 调试 Jupyter Notebook
- 导出 Jupyter Notebook
要使用 Jupyter Notebooks,您必须在 VS Code 中激活一个 Anaconda 环境,或者您已安装 Jupyter package 的另一个 Python 环境。要选择环境,请使用命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的 Python: 选择解释器 命令。
激活适当的环境后,您可以创建和运行类似 Jupyter 的代码单元格,连接到远程 Jupyter 服务器以运行代码单元格,并将 Python 文件导出为 Jupyter Notebooks。
Jupyter 代码单元格
您可以使用 # %% 注释在 Python 代码中定义类似 Jupyter 的代码单元格
# %%
msg = "Hello World"
print(msg)
# %%
msg = "Hello again"
print(msg)
注意: 确保将上面的代码保存到扩展名为 .py 的文件中。
当 Python 扩展检测到代码单元格时,它会添加 运行单元格 和 调试单元格 CodeLens 装饰。第一个单元格还包括 运行下方,而所有后续单元格都包括 运行上方

注意: 默认情况下,调试单元格 仅会进入用户代码。如果您想进入非用户代码,您需要在 Jupyter 扩展设置中取消选中 仅调试我的代码 (⌘, (Windows, Linux Ctrl+,))。
运行单元格 仅适用于单个代码单元格。运行下方,出现在第一个单元格上,会运行文件中的所有代码。运行上方 适用于所有代码单元格,但不包括带有装饰器的单元格。例如,您可以使用 运行上方 在运行特定单元格之前初始化运行时环境的状态。
选择命令将启动 Jupyter(如果需要,这可能需要一分钟),然后在 Python 交互式 窗口中运行适当的单元格

您还可以使用 (Ctrl+Enter) 或 Python: 在 Python 终端中运行选定内容/行 命令 (Shift+Enter) 运行代码单元格。使用此命令后,Python 扩展会自动将光标移动到下一个单元格。如果您位于文件中的最后一个单元格,扩展会自动插入另一个 # %% 分隔符以创建一个新单元格,从而模拟 Jupyter Notebook 的行为。
您还可以单击行号左侧的边距以设置断点。然后,您可以使用 调试单元格 启动该代码单元格的调试会话。调试器会在断点处停止执行,并允许您逐行执行代码并检查变量(有关详细信息,请参阅 Debugging)。
其他命令和键盘快捷键
下表列出了在使用代码单元格时支持的其他命令和键盘快捷键。
| 命令 | 键盘快捷键 |
|---|---|
| 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 交互式窗口中键入时,您可以像在代码编辑器中一样高效。

绘图查看器
绘图查看器使您能够更深入地处理绘图。在查看器中,您可以平移、缩放和导航当前会话中的绘图。您还可以将绘图导出为 PDF、SVG 和 PNG 格式。
在 Python 交互式窗口中,双击任何绘图以在查看器中打开它,或选择绘图左上角的展开按钮。

注意: Python 交互式窗口支持渲染使用 matplotlib 和 Altair 创建的绘图。
变量资源管理器和数据查看器
在 Python 交互式窗口中,可以查看、检查和筛选当前 Jupyter 会话中的变量。选择交互式窗口工具栏上的 变量 按钮,在运行代码和单元格后打开变量资源管理器,您将看到当前变量的列表,这些变量将随着代码中变量的使用而自动更新。

要获取有关变量的更多信息,您还可以双击行或使用 在数据查看器中显示变量 按钮,以在数据查看器中查看变量的更详细视图。打开后,您可以搜索行来筛选值。

连接到远程 Jupyter 服务器
您可以通过连接到远程 Jupyter 服务器来将 Jupyter Notebook 中的密集计算卸载到其他计算机。连接后,代码单元格将在远程服务器上运行,而不是在本地计算机上运行。
要连接到远程 Jupyter 服务器
-
运行命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的 Jupyter: 指定用于连接的本地或远程 Jupyter 服务器 命令。
-
选择您希望如何连接到 Jupyter 服务器。

-
如果远程工作,请提供服务器的 URI(主机名),并在提示时使用
?token=URL 参数包含身份验证令牌。(如果您在启用身份验证令牌的情况下在 VS Code 终端中启动服务器,则包含令牌的 URL 通常会出现在您可以在其中复制它的终端输出中。)或者,您可以在提供 URI 后指定用户名和密码。
-
Python 交互式窗口通过显示 URI(如下所示的图像中已模糊处理)来指示代码运行的位置

注意: 为了提高安全性,Microsoft 建议配置您的 Jupyter 服务器以使用 SSL 和令牌支持等安全预防措施。这有助于确保发送到 Jupyter 服务器的请求经过身份验证,并且与远程服务器的连接已加密。有关保护 Notebook 服务器的指导,请参阅 Jupyter 文档。
将 Jupyter Notebook 转换为 Python 代码文件
当您激活了安装了 Jupyter 的环境后,您可以打开 VS Code 中的 Jupyter Notebook 文件(.ipynb),然后将其转换为 Python 代码。转换文件后,您可以像使用任何其他 Python 文件一样运行代码,并使用 VS Code 调试器。在 VS Code 中打开和调试 Notebook 是一种方便的方法,可以找到并解决代码错误,这很难直接在 Jupyter Notebook 中完成。
当您打开 Notebook 文件时,Visual Studio Code 会自动在 Notebook 编辑器中打开它。使用工具栏上的转换图标将 Notebook(.ipynb)文件转换为 Python 文件(.py)。

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

注意: 首次在 Python 文件中运行代码单元格时,Python 扩展会启动 Jupyter 服务器。服务器启动并使 Python 交互式 窗口显示结果可能需要一些时间。
调试 Jupyter Notebook
Visual Studio Code 调试器允许您逐行执行代码、设置断点、检查状态和分析问题。使用调试器是一种查找和纠正 Notebook 代码中问题的有用方法。
-
在 VS Code 中,激活一个安装了 Jupyter 的 Python 环境,如本文开头所述。
-
按照上一节所述的方式将 Notebook 的
.ipynb文件导入 VS Code。(如果您使用的是基于云的 Jupyter 环境(例如 Azure Notebooks),请先下载该文件。) -
要启动调试器,请使用以下选项之一
- 对于整个 Notebook,请打开命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))并运行 Jupyter: 在 Python 交互式窗口中调试当前文件 命令。
- 对于单个单元格,请使用出现在单元格上方的 调试单元格 装饰。调试器专门从该单元格中的代码开始。默认情况下,调试单元格 仅会进入用户代码。如果您想进入非用户代码,您需要在 Jupyter 扩展设置中取消选中 仅调试我的代码 (⌘, (Windows, Linux Ctrl+,))。
-
要熟悉 VS Code 的常规调试功能,例如检查变量、设置断点和其他活动,请查看 VS Code 调试。
-
在您找到问题后,停止调试器,更正您的代码,保存文件,然后再次启动调试器。
-
当您确信所有代码都正确时。保存文件,然后按照下一节所述的方式导出 Notebook。然后,您可以将 Notebook 上传到您正常的 Jupyter 环境。
导出 Jupyter Notebook
除了打开 Jupyter notebook 之外,您还可以使用命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的以下命令,将 VS Code 中的 Python 文件内容导出为 Jupyter notebook(带有 .ipynb 扩展名)。
- Jupyter: 将当前 Python 文件导出为 Jupyter Notebook:使用
# %%和# %% [markdown]分隔符指定各自的单元格类型,从当前文件的内容创建 Jupyter notebook。 - Jupyter: 将当前 Python 文件和输出导出为 Jupyter Notebook:从当前文件的内容创建 Jupyter notebook,并包含代码单元格的输出。
- Jupyter: 将交互式窗口导出为 Jupyter Notebook:从 Python 交互式窗口的内容创建 Jupyter notebook。
导出内容后,VS Code 会显示一个提示,您可以通过该提示在浏览器中打开 notebook。