现已发布!阅读关于 11 月新增功能和修复的内容。

Python 交互窗口

Jupyter(以前称为 IPython Notebook)是一个开源项目,可让您在一个称为“notebook”的画布上轻松地将 Markdown 文本和可执行的 Python 源代码结合起来。Visual Studio Code 原生支持使用 Jupyter Notebooks,同时也支持通过 Python 代码文件进行操作。本主题涵盖了通过 Python 代码文件提供的支持,并演示了如何

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

要使用 Jupyter Notebook,您必须在 VS Code 中激活 Anaconda 环境,或者在您已安装 Jupyter 包的另一个 Python 环境中。要选择环境,请使用命令面板中的Python: Select Interpreter 命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))。

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

Jupyter 代码单元格

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

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

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

注意:请确保将上述代码保存在扩展名为 .py 的文件中。

当 Python 扩展检测到代码单元格时,它会添加Run Cell(运行单元格)和Debug Cell(调试单元格)CodeLens 装饰。第一个单元格还包含Run Below(运行下方),所有后续单元格都包含Run Above(运行上方)。

Jupyter adornments for code cells in the VS Code editor

注意:默认情况下,Debug Cell 仅会单步进入用户代码。如果您想单步进入非用户代码,则需要在 Jupyter 扩展设置(⌘, (Windows, Linux Ctrl+,))中取消选中Debug Just My Code(仅调试我的代码)。

Run Cell 仅适用于一个代码单元格。Run Below(出现在第一个单元格上)会运行文件中的所有代码。Run Above 适用于直到但不包含带有装饰的单元格的所有代码单元格。例如,您会使用Run Above来初始化运行时环境的状态,然后再运行该特定单元格。

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

Code cells running in a Python Interactive window

您还可以使用 (Ctrl+Enter) 或Python: Run Selection/Line in Python Terminal(Python: 在 Python 终端中运行选定行/行)命令(Shift+Enter)来运行代码单元格。使用此命令后,Python 扩展会自动将光标移至下一个单元格。如果您在文件的最后一个单元格中,扩展会自动插入另一个 # %% 分隔符以创建新单元格,从而模仿 Jupyter Notebook 的行为。

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

其他命令和键盘快捷键

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

命令 键盘快捷键
Python: Go to Next Cell(Python: 转到下一个单元格) Ctrl+Alt+]
Python: Go to Previous Cell(Python: 转到上一个单元格) Ctrl+Alt+[
Python: Extend Selection by Cell Above(Python: 扩展选择到上方单元格) Ctrl+Shift+Alt+[
Python: Extend Selection by Cell Below(Python: 扩展选择到下方单元格) Ctrl+Shift+Alt+]
Python: Move Selected Cells Up(Python: 向上移动选定单元格) Ctrl+; U
Python: Move Selected Cells Down(Python: 向下移动选定单元格) Ctrl+; D
Python: Insert Cell Above(Python: 在上方插入单元格) Ctrl+; A
Python: Insert Cell Below(Python: 在下方插入单元格) Ctrl+; B
Python: Insert Cell Below Position(Python: 在指定位置下方插入单元格) Ctrl+; S
Python: Delete Selected Cells(Python: 删除选定单元格) Ctrl+; X
Python: Change Cell to Code(Python: 将单元格更改为代码) Ctrl+; C
Python: Change Cell to Markdown(Python: 将单元格更改为 Markdown) Ctrl+; M

使用 Python 交互窗口

前面部分提到的Python Interactive(Python 交互)窗口可以用作独立的控制台,用于处理任意代码(有或没有代码单元格)。要将该窗口用作控制台,请使用命令面板中的Jupyter: Create Interactive Window(Jupyter: 创建交互窗口)命令将其打开。然后,您可以键入代码,使用 Enter 键转到新行,并使用 Shift+Enter 键运行代码。

要将该窗口与文件一起使用,请使用命令面板中的Jupyter: Run Current File in Python Interactive Window(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(变量)按钮以打开变量资源管理器,您将看到当前变量的列表,这些变量在使用代码时会自动更新。

Variables Explorer

有关变量的更多信息,您还可以双击某一行,或使用Show variable in data viewer(在数据查看器中显示变量)按钮在数据查看器中查看变量的更详细视图。打开后,您可以通过搜索行来筛选值。

Data Viewer

连接到远程 Jupyter 服务器

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

连接到远程 Jupyter 服务器

  1. 使用命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))运行Jupyter: Specify local or remote Jupyter server for connections(Jupyter: 为连接指定本地或远程 Jupyter 服务器)命令。

  2. 选择要连接到 Jupyter 服务器的方式。Prompt to supply a Jupyter server 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 建议配置您的 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)。

Icon to convert a Jupyter notebook file

选择转换图标,然后选择“Python Script”,等待几秒钟,VS Code 就会在未命名文件中打开转换后的 notebook。Notebook 的单元格在 Python 文件中用 # %% 注释分隔;Markdown 单元格将完全转换为以 # %% [markdown] 为前缀的注释,并在交互窗口中以 HTML 形式呈现,与代码和图形等输出一起显示。

Jupyter notebook running in VS Code and the Python Interactive window

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

调试 Jupyter Notebook

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

  1. 在 VS Code 中,按照本文开头所述,激活一个已安装 Jupyter 的 Python 环境。

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

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

    • 对于整个 Notebook,打开命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))并运行Jupyter: Debug Current File in Python Interactive Window(Jupyter: 在 Python 交互窗口中调试当前文件)命令。
    • 对于单个单元格,使用出现在单元格上方的Debug Cell(调试单元格)装饰。调试器专门针对该单元格中的代码启动。默认情况下,Debug Cell 仅会单步进入用户代码。如果您想单步进入非用户代码,则需要在 Jupyter 扩展设置(⌘, (Windows, Linux Ctrl+,))中取消选中Debug Just My Code(仅调试我的代码)。
  4. 要熟悉 VS Code 的常规调试功能,例如检查变量、设置断点和其他活动,请参阅VS Code debugging

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

  6. 当您对所有代码都满意后。保存文件,然后按照下一节中的说明导出 Notebook。然后,您可以将 Notebook 上传到您的常规 Jupyter 环境。

导出 Jupyter Notebook

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

  • Jupyter: Export Current Python File as Jupyter Notebook(Jupyter: 将当前 Python 文件导出为 Jupyter Notebook):从当前文件的内容创建一个 Jupyter Notebook,使用 # %%# %% [markdown] 分隔符来指定它们各自的单元格类型。
  • Jupyter: Export Current Python File and Output as Jupyter Notebook(Jupyter: 将当前 Python 文件和输出导出为 Jupyter Notebook):从当前文件的内容创建一个 Jupyter Notebook,并包含代码单元格的输出。
  • Jupyter: Export Interactive Window as Jupyter Notebook(Jupyter: 将交互窗口导出为 Jupyter Notebook):从 Python 交互窗口的内容创建一个 Jupyter Notebook。

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

© . This site is unofficial and not affiliated with Microsoft.