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: 选择解释器命令(⇧⌘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扩展检测到一个代码单元时,它会添加运行单元和调试单元的CodeLens装饰。第一个单元还包括在下方运行,所有后续单元包括在上方运行:
注意: 默认情况下,调试单元格 只会进入用户代码。如果你想进入非用户代码,你需要在 Jupyter 扩展设置中取消勾选 仅调试我的代码 (⌘, (Windows, Linux Ctrl+,))。
运行单元格 仅适用于一个代码单元格。运行下方,出现在第一个单元格上,运行文件中的所有代码。运行上方 适用于所有代码单元格,直到但不包括带有装饰的单元格。例如,您可以使用 运行上方 在运行特定单元格之前初始化运行时环境的状态。
选择一个命令会启动Jupyter(如果需要,可能需要一分钟),然后在Python Interactive窗口中运行相应的单元格:
你也可以使用(Ctrl+Enter)或Python: 在Python终端中运行选择/行命令(Shift+Enter)来运行代码单元格。使用此命令后,Python扩展会自动将光标移动到下一个单元格。如果你在文件的最后一个单元格中,扩展会自动插入另一个# %%
分隔符以创建一个新单元格,模仿Jupyter笔记本的行为。
你也可以点击行号左侧的边距来设置断点。然后你可以使用Debug Cell来启动该代码单元的调试会话。调试器会在断点处停止执行,并允许你逐行步进代码并检查变量(详情请参见调试)。
附加命令和键盘快捷键
下表列出了在处理代码单元格时支持的附加命令和键盘快捷键。
Command | Keyboard shortcut |
---|---|
Python: Go to Next Cell | Ctrl+Alt+] |
Python: Go to Previous Cell | Ctrl+Alt+[ |
Python: Extend Selection by Cell Above | Ctrl+Shift+Alt+[ |
Python: Extend Selection by Cell Below | Ctrl+Shift+Alt+] |
Python: Move Selected Cells Up | Ctrl+; U |
Python: Move Selected Cells Down | Ctrl+; D |
Python: Insert Cell Above | Ctrl+; A |
Python: Insert Cell Below | Ctrl+; B |
Python: Insert Cell Below Position | Ctrl+; S |
Python: Delete Selected Cells | Ctrl+; X |
Python: Change Cell to Code | Ctrl+; C |
Python: Change Cell to Markdown | Ctrl+; M |
使用 Python 交互窗口
在前一节中提到的Python Interactive窗口,可以用作带有任意代码的独立控制台(带或不带代码单元格)。要将该窗口用作控制台,请使用命令面板中的Jupyter: Create Interactive Window命令打开它。然后您可以输入代码,使用Enter换行,使用Shift+Enter运行代码。
要在文件中使用窗口,请从命令面板中使用Jupyter: 在Python交互窗口中运行当前文件命令。
智能感知
Python 交互窗口具有完整的 IntelliSense 功能——代码补全、成员列表、方法的快速信息以及参数提示。在 Python 交互窗口中输入代码时,您可以像在代码编辑器中一样高效。
绘图查看器
绘图查看器使您能够更深入地处理您的图表。在查看器中,您可以平移、缩放和导航当前会话中的图表。您还可以将图表导出为PDF、SVG和PNG格式。
在Python交互窗口中,双击任何图表以在查看器中打开它,或选择图表左上角的展开按钮。
注意: Python 交互窗口支持渲染使用 matplotlib 和 Altair 创建的图表。
变量探索器和数据查看器
在Python交互窗口中,可以查看、检查和过滤当前Jupyter会话中的变量。在运行代码和单元格后,选择交互窗口工具栏中的Variables按钮以打开变量资源管理器,您将看到当前变量的列表,这些变量将随着代码中使用变量而自动更新。
有关变量的更多信息,您还可以双击某一行或使用在数据查看器中显示变量按钮,以在数据查看器中查看变量的更详细视图。打开后,您可以通过搜索行来过滤值。
连接到远程Jupyter服务器
您可以通过连接到远程Jupyter服务器,将Jupyter笔记本中的密集计算任务卸载到其他计算机上。连接后,代码单元将在远程服务器上运行,而不是在本地计算机上。
连接到远程Jupyter服务器:
-
运行Jupyter: 指定本地或远程Jupyter服务器进行连接命令,从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))。
-
选择您希望如何连接到Jupyter服务器。
-
如果远程工作,请在提示时提供服务器的URI(主机名),并在URL参数中包含认证令牌,使用
?token=
。(如果您在VS Code终端中启动服务器并启用了认证令牌,通常会在终端输出中显示带有令牌的URL,您可以从中复制。)或者,您可以在提供URI后指定用户名和密码。 -
Python 交互窗口通过显示 URI(在下面的图像中已模糊处理)来指示代码运行的位置:
注意: 为了增加安全性,微软建议配置您的Jupyter服务器时采取安全预防措施,如SSL和令牌支持。这有助于确保发送到Jupyter服务器的请求是经过认证的,并且与远程服务器的连接是加密的。有关保护笔记本服务器的指导,请参阅Jupyter文档。
将Jupyter笔记本转换为Python代码文件
当你激活了一个安装了Jupyter的环境后,你可以在VS Code中打开一个Jupyter笔记本文件(.ipynb
),然后将其转换为Python代码。一旦你转换了文件,你就可以像处理任何其他Python文件一样运行代码,并且还可以使用VS Code的调试器。在VS Code中打开和调试笔记本是一种方便的方法来查找和解决代码错误,这直接在Jupyter笔记本中是很难做到的。
当你打开一个笔记本文件时,Visual Studio Code 会自动在笔记本编辑器中打开它。使用工具栏上的转换图标将笔记本 (.ipynb) 文件转换为 Python 文件 (.py)。
选择转换图标,然后选择“Python脚本”,等待几秒钟,VS Code将在未命名的文件中打开转换后的笔记本。笔记本的单元格在Python文件中用# %%
注释分隔;Markdown单元格完全转换为以# %% [markdown]
开头的注释,并在交互窗口中与代码和输出(如图表)一起呈现为HTML:
注意: 第一次在Python文件中运行代码单元时,Python扩展会启动一个Jupyter服务器。服务器启动并显示Python交互式窗口中的代码结果可能需要一些时间。
调试 Jupyter 笔记本
Visual Studio Code 调试器允许您逐步执行代码、设置断点、检查状态并分析问题。使用调试器是查找和纠正笔记本代码问题的有效方法。
-
在VS Code中,激活一个安装了Jupyter的Python环境,如本文开头所述。
-
将笔记本的
.ipynb
文件导入VS Code,如前一节所述。(如果您使用的是基于云的Jupyter环境,例如Azure Notebooks,请先下载该文件。) -
要启动调试器,请使用以下选项之一:
- For the whole notebook, open the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) and run the Jupyter: Debug Current File in Python Interactive Window command.
- For an individual cell, use the Debug Cell adornment that appears above the cell. The debugger specifically starts on the code in that cell. By default, Debug Cell just steps into user code. If you want to step into non-user code, you need to uncheck Debug Just My Code in the Jupyter extension settings (⌘, (Windows, Linux Ctrl+,)).
-
为了熟悉VS Code的一般调试功能,例如检查变量、设置断点和其他活动,请查看VS Code调试。
-
当你发现问题时,停止调试器,修正你的代码,保存文件,然后再次启动调试器。
-
当您确认所有代码都正确无误后。保存文件,然后按照下一节所述导出笔记本。之后,您可以将笔记本上传到您常用的Jupyter环境中。
导出 Jupyter 笔记本
除了打开一个Jupyter笔记本,你还可以使用命令面板中的以下命令之一(⇧⌘P (Windows, Linux Ctrl+Shift+P))将VS Code中的Python文件内容导出为Jupyter笔记本(带有.ipynb
扩展名)。
- Jupyter: 将当前Python文件导出为Jupyter Notebook: 使用
# %%
和# %% [markdown]
分隔符来指定各自的单元格类型,从当前文件的内容创建一个Jupyter笔记本。 - Jupyter: 导出当前Python文件及输出为Jupyter Notebook: 从当前文件的内容创建一个Jupyter笔记本,并包含代码单元格的输出。
- Jupyter: 将交互式窗口导出为 Jupyter 笔记本: 从 Python 交互式窗口的内容创建一个 Jupyter 笔记本。
导出内容后,VS Code 会显示一个提示,通过该提示您可以在浏览器中打开笔记本。