Python 交互窗口

Jupyter(前称IPython Notebook)是一个开源项目,允许你轻松将Markdown文本和可执行的Python源代码组合在一个称为笔记本的画布上。Visual Studio Code 原生支持使用 Jupyter Notebooks,也支持通过 Python 代码文件作。本主题涵盖了通过 Python 代码文件提供的支持,并演示如何:

  • 与类似Jupyter的编码单元工作
  • 在 Python 交互窗口中运行代码
  • 使用变量浏览器和数据查看器查看、检查和过滤变量
  • 连接到远程Jupyter服务器
  • 调试Jupyter笔记本
  • 导出Jupyter笔记本

要使用 Jupyter 笔记本,你必须在 VS Code 中激活 Anaconda 环境,或者在你安装了 Jupyter 包的其他 Python 环境中激活。要选择环境,请使用命令面板中的 Python: Select 解释器命令(⇧⌘P(Windows,Linux Ctrl+Shift+P)。

一旦激活了相应环境,你可以创建并运行类似 Jupyter 的代码单元,连接到远程 Jupyter 服务器运行代码单元,并导出 Python 文件作为 Jupyter 笔记本。

Jupyter 码单元

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

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

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

注意:请务必将上述代码保存在带有.py扩展名的文件中。

当 Python 扩展检测到代码单元时,会添加 Run 单元格和调试单元 CodeLens 装饰。第一个单元格还包含“Run Below”,后续单元格中包含“Run Above”:

VS 代码编辑器中代码单元的 Jupyter 装饰

注:默认情况下,调试单元只是直接进入用户代码。如果你想进入非用户代码,需要在Jupyter扩展设置中取消勾选“仅仅我的代码调试”(⌘,(Windows,Linux Ctrl+,)。

运行单元只适用于一个代码单元。Run Below(位于第一个单元格)运行文件中的所有代码。Run Above 适用于所有代码单元格,直到带有装饰的单元格,但不包括。例如,你可以用 Run Above 初始化运行时环境的状态,然后再运行该特定单元。

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

在 Python 交互窗口中运行的代码单元

你也可以用 (Ctrl+Enter) 或 Python 终端里的 Python: Run Selection/Line 命令(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: Create Interactive Window 命令打开窗口。然后你可以输入代码,按Enter进入新行,按Shift+Enter执行代码。

要使用带有文件的窗口,请使用命令调色板中的 Jupyter: Run Current File in Python 交互窗口命令。

IntelliSense

Python 交互窗口包含完整的 IntelliSense——代码补全、成员列表、方法快速信息和参数提示。你可以在 Python 交互窗口中打字,就像在代码编辑器里一样高效。

Python交互窗口中的IntelliSense

剧情查看器

剧情查看器让你能够更深入地处理你的情节。在查看器中,你可以平移、缩放和当前会话中的图表导航。你还可以导出图表成PDF、SVG和PNG格式。

在 Python 交互窗口中,双击任意图表可在查看器中打开,或选择图表左上角的展开按钮。

带有Python交互窗口的情节查看器

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

变量浏览器和数据查看器

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

变量探索器

如需了解更多关于变量的信息,您也可以双击某行,或使用“在数据查看器中显示变量”按钮,查看数据查看器中变量的更详细视图。打开后,你可以通过搜索行来筛选这些值。

数据查看器

连接到远程Jupyter服务器

你可以通过连接到远程的Jupyter服务器,将Jupyter笔记本中的高计算量分装到其他计算机。连接后,代码单元运行在远程服务器上,而非本地计算机。

连接远程Jupyter服务器:

  1. 运行Jupyter:在命令面板中指定本地或远程Jupyter服务器的连接命令(⇧⌘P(Windows,Linux Ctrl+Shift+P)。

  2. 选择你想如何连接到 Jupyter 服务器。提示提供 Jupyter 服务器 URI

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

    提示提供 Jupyter 服务器 URI

  4. Python 交互窗口通过显示 URI(下图中对其进行了模糊处理)来显示代码运行位置:

    Python 交互窗口显示代码运行在远程 Jupyter 服务器上

注:为了增强安全性,Microsoft建议在Jupyter服务器上配置安全措施,如SSL和令牌支持。这有助于确保发送到Jupyter服务器的请求得到认证,并且与远程服务器的连接得到加密。关于如何保护笔记本服务器的指导,请参见Jupyter文档

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

当你激活安装了 Jupyter 的环境后,可以打开一个 Jupyter 笔记本文件 (.ipynb然后转换成Python代码。转换文件后,你可以像处理其他 Python 文件一样运行代码,同时也可以使用 VS Code 调试器。在 VS Code 中打开和调试笔记本是一种方便的方式,可以发现和解决代码错误,而这在 Jupyter 笔记本中直接完成是较为困难的。

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

用图标转换Jupyter笔记本文件

选择转换图标,然后选择“Python Script”,等待几秒钟,然后VS Code会打开一个无标题的文件。笔记本的单元格在Python文件中用注释被划分;Markdown 单元格完全转换为前面的注释# %%# %% [折扣],并以HTML形式在交互窗口中渲染,与代码和输出(如图表)并列:

在VS Code和Python交互窗口中运行的Jupyter笔记本

注:第一次在 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: Debug Current File in 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 笔记本:利用当前文件内容创建 Jupyter 笔记本,使用和# %%# %% [折扣]分隔符用于指定各自的单元格类型。
  • Jupyter:导出当前 Python 文件并输出为 Jupyter 笔记本:从当前文件内容创建 Jupyter 笔记本,并包含代码单元的输出。
  • Jupyter:将交互窗口导出为 Jupyter 笔记本:从 Python 交互窗口的内容创建 Jupyter 笔记本。

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