在VS Code中使用Jupyter Notebook:从入门到精通
在VS Code中使用Jupyter Notebook:从入门到精通
Jupyter Notebook是数据科学领域广受欢迎的交互式计算环境,它允许用户在同一个文档中混合使用Markdown文本和可执行的Python代码。Visual Studio Code(VS Code)提供了对Jupyter Notebook的原生支持,使得用户可以在一个集成开发环境中进行数据分析和代码编写。本文将详细介绍如何在VS Code中使用Jupyter Notebook,包括创建、运行、调试以及与其他工具的集成等。
环境设置
要在VS Code中使用Jupyter Notebook,首先需要激活一个包含Jupyter包的Python环境。可以通过命令面板(⇧⌘P(Windows, Linux Ctrl+Shift+P))中的"Python: Select Interpreter"命令来选择合适的环境。
一旦环境激活,你就可以创建和打开Jupyter Notebook,连接到远程Jupyter服务器以运行代码单元格,或者将Jupyter Notebook导出为Python文件。
工作区信任
在开始使用Jupyter Notebook时,确保你在一个受信任的工作区中工作是很重要的。有害代码可能被嵌入到笔记本中,而"工作区信任"功能允许你指示哪些文件夹及其内容应该允许或限制自动代码执行。
如果你尝试在VS Code处于不受信任的工作区时打开笔记本,你将无法执行单元格,丰富的输出也将被隐藏。
创建或打开Jupyter Notebook
你可以通过命令面板中的"Create: New Jupyter Notebook"命令来创建一个新的Jupyter Notebook,或者在工作区中创建一个新的.ipynb文件。
接下来,使用右上角的内核选择器来选择一个内核。选择内核后,每个代码单元格右下角的语言选择器会自动更新为内核支持的语言。
如果你已经有一个现有的Jupyter Notebook,可以通过右键点击文件并选择用VS Code打开,或者通过VS Code的文件资源管理器来打开它。
运行单元格
运行单个代码单元格
一旦代码添加完成,你可以通过点击单元格左侧的"运行"图标来运行该单元格,输出将显示在代码单元格下方。
你也可以使用键盘快捷键来运行单元格:
- Ctrl+Enter:运行当前选中的单元格
- Shift+Enter:运行当前选中的单元格并在其下方插入一个新单元格(焦点移动到新单元格)
- Alt+Enter:运行当前选中的单元格并在其下方插入一个新单元格(焦点保留在当前单元格)
运行多个代码单元格
运行多个代码单元格可以通过多种方式实现。你可以在笔记本编辑器的主要工具栏中使用双箭头来运行所有单元格,或者通过选择"运行全部"、"运行上方所有"或"运行下方所有"来运行当前代码单元格上方或下方的所有单元格。
按节运行单元格
为了更方便地运行相关单元格,你可以通过"运行节中单元格"操作来运行按Markdown节标题分组的单元格。此操作在笔记本大纲视图和固定滚动元素中可用。
在固定滚动元素中,右键点击你选择的标题,然后通过上下文菜单中的操作来运行该节。在大纲视图中,选择悬停或选中时出现的工具栏图标,然后通过显示的操作来运行单个单元格或节中的单元格。
保存你的Jupyter Notebook
你可以使用键盘快捷键Ctrl+S或通过"文件">"保存"来保存你的Jupyter Notebook。
导出你的Jupyter Notebook
你可以将Jupyter Notebook导出为Python文件(.py)、PDF或HTML文件。要导出,选择主工具栏中的"..." > "导出"。然后,你将看到一个文件格式选项下拉菜单。
注意:对于PDF导出,你需要安装TeX。如果你没有安装,当你选择PDF选项时会收到需要安装的通知。另外,需要注意的是,如果你的笔记本中只有SVG输出,它们将不会在PDF中显示。要让SVG图形在PDF中显示,要么确保你的输出包含非SVG图像格式,要么你可以先导出为HTML,然后使用浏览器将其另存为PDF。
在笔记本编辑器中处理代码单元格
笔记本编辑器使创建、编辑和运行代码单元格变得容易。
创建代码单元格
默认情况下,一个新的空白笔记本将有一个空的代码单元格供你开始使用,而现有的笔记本会在底部添加一个。在空的代码单元格中添加你的代码即可开始。
msg = "Hello world"
print(msg)
代码单元格模式
在处理代码单元格时,一个单元格可以处于三种状态:未选中、命令模式和编辑模式。单元格左侧的垂直条和编辑器边框显示单元格的当前状态。当没有垂直条显示时,表示单元格未选中。当单元格被选中时,它可以处于命令模式或编辑模式。
在命令模式下,单元格左侧会出现一个实心垂直条,此时单元格可以接受键盘命令。
在编辑模式下,实心垂直条会与围绕单元格编辑器的边框结合出现,此时可以修改单元格的内容(代码或Markdown)。
你可以通过键盘或鼠标来切换模式。在键盘上,按Enter键进入编辑模式,按Esc键进入命令模式。使用鼠标时,点击单元格左侧的垂直条或点击代码/Markdown区域之外的位置。
添加额外的代码单元格
你可以通过主工具栏、单元格的添加单元格工具栏(悬停时可见)以及键盘命令来添加代码单元格。
要在一个选中的单元格下方添加一个新单元格,可以使用主工具栏中的加号图标或单元格的悬停工具栏。
当代码单元格处于命令模式时,可以使用A键在选中单元格上方添加一个单元格,使用B键在选中单元格下方添加一个单元格。
选择代码单元格
你可以使用鼠标或键盘上的上下箭头键来更改选中的代码单元格。当代码单元格处于命令模式时,你还可以使用J键(向下)和K键(向上)。
选择多个代码单元格
要选择多个单元格,从一个处于选中模式的单元格开始。选中的单元格会显示填充背景。要选择连续的单元格,按住Shift键并点击你想要选择的最后一个单元格。要选择任意一组单元格,按住Ctrl键并点击你想要添加到选择中的单元格。
移动代码单元格
你可以在笔记本中通过拖放来移动单元格。对于代码单元格,拖放区域在单元格编辑器的左侧,如图所示。对于渲染后的Markdown单元格,你可以点击任何位置来拖放单元格。
要移动多个单元格,你可以使用任何选中单元格中的拖放区域。
使用键盘快捷键Alt+箭头也可以移动一个或多个选中的单元格。
删除代码单元格
要删除代码,你可以使用代码单元格工具栏中的"删除"图标。当选中的代码单元格处于命令模式时,你可以使用键盘快捷键dd。
撤销上一个更改
你可以使用z键来撤销上一个更改,例如,如果你不小心进行了错误的编辑,可以撤销到之前的正确状态,或者如果你不小心删除了一个单元格,可以恢复它。
在代码和Markdown之间切换
笔记本编辑器允许你轻松地在代码单元格和Markdown之间切换。通过选择单元格右下角的语言选择器,你可以切换到Markdown,如果适用,还可以切换到所选内核支持的任何其他语言。
你也可以使用键盘来改变单元格类型。当一个单元格被选中且处于命令模式时,M键将单元格类型切换为Markdown,Y键将单元格类型切换为代码。
一旦设置了Markdown,你可以在代码单元格中输入Markdown格式的内容。
要渲染Markdown单元格,你可以选择单元格工具栏中的复选标记,或者使用键盘快捷键Ctrl+Enter和Shift+Enter。
清除输出或重启/中断内核
如果你想清除所有代码单元格的输出或重启/中断内核,可以通过主笔记本编辑器工具栏来完成。
启用/禁用行号
当你处于命令模式时,可以使用L键在单个代码单元格中启用或禁用行号。
要为整个笔记本切换行号显示,可以在命令模式下使用Shift+L。
目录
要导航你的笔记本,可以在活动栏中打开文件资源管理器。然后在侧边栏中打开"大纲"选项卡。
你可以使用大纲视图中的过滤控件来包括Markdown标题、代码单元格和代码单元格符号。这些过滤器对应以下设置:
- notebook.outline.showMarkdownHeadersOnly
- notebook.outline.showCodeCells
- notebook.outline.showCodeCellSymbols
注意:默认情况下,大纲只会显示Markdown。要显示代码单元格,需要启用以下设置:"Notebook > Outline: Show Code Cells"。
IntelliSense支持
Python Jupyter Notebook编辑器窗口具有完整的IntelliSense支持,包括代码补全、成员列表、方法的快速信息和参数提示。你在笔记本编辑器窗口中输入代码的效率可以与代码编辑器相当。
变量探索和数据查看
在Python Notebook中,你可以查看、检查、排序和过滤当前Jupyter会话中的变量。通过在运行代码和单元格后选择主工具栏中的"变量"图标,你将看到当前变量的列表,这些变量会随着代码中变量的使用而自动更新。变量面板将打开在笔记本的底部。
数据查看器
对于变量的更多详细信息,你可以双击一行或使用变量旁边的"在数据查看器中显示变量"按钮来查看变量的详细视图。
或者,你也可以使用其他扩展如Data Wrangler提供的数据查看体验。Data Wrangler扩展提供了一个丰富的用户界面来显示数据洞察,帮助你进行数据剖析、质量检查、转换等。了解更多关于Data Wrangler扩展的信息,请参阅我们的文档。
过滤行
在数据查看器中过滤行可以通过在每列顶部的文本框中输入字符串来实现。输入你想要搜索的字符串,任何在该列中包含该字符串的行都将被找到:
如果你想查找精确匹配,可以在过滤器前加上'=':
更复杂的过滤可以通过输入正则表达式来实现:
保存图表
要从笔记本中保存图表,只需悬停在输出上并选择右上角的"保存"图标。
注意:支持渲染使用matplotlib和Altair创建的图表。
自定义笔记本差异比较
在底层,Jupyter Notebooks是JSON文件。JSON文件中的段落被渲染为由三个组件组成的单元格:输入、输出和元数据。使用基于行的差异比较来查看笔记本中的更改既困难又难以解析。笔记本的丰富差异编辑器允许你轻松查看单元格每个组件的更改。
你甚至可以自定义差异视图中显示的更改类型。在右上角,选择工具栏中的溢出菜单项来自定义要包含的单元格组件。输入差异始终会被显示。
要了解更多关于VS Code中的Git集成,请访问VS Code中的源代码控制。
调试Jupyter Notebook
有两种不同的方式来调试Jupyter笔记本:一种更简单的模式称为"逐行运行",以及完整的调试模式。
注意:这两个功能都需要ipykernel 6+。有关ipykernel的安装或升级,请参阅此维基页面。
逐行运行
逐行运行允许你一次执行一个单元格的语句,而不会被VS Code调试功能分散注意力。要开始,选择单元格工具栏中的"逐行运行"按钮:
使用相同的按钮可以逐语句前进。你可以选择单元格"停止"按钮提前停止,或者使用工具栏中的"继续"按钮继续运行到单元格的末尾。
调试单元格
如果你想使用VS Code支持的完整调试功能集,例如断点和进入其他单元格或.py文件的能力,可以使用完整的VS Code调试器。
- 首先通过点击笔记本单元格左侧的边距来设置所需的断点。
- 然后选择菜单中"运行"按钮旁边的"调试单元格"按钮。这将在调试会话中运行单元格,并在任何代码运行时暂停在断点处,即使代码在其他单元格或.py文件中。
- 你可以像在VS Code中通常那样使用调试视图、调试控制台和调试工具栏中的所有按钮。
- 请注意,调试笔记本单元格不使用launch.json中的任何调试配置。相反,它可以通过设置如jupyter.debugJustMyCode来定制。
在笔记本中搜索
你可以使用键盘快捷键Ctrl/Cmd + F在整个笔记本(或通过过滤搜索选项的部分)中进行搜索。点击过滤选项(漏斗图标)可以在以下选项中进行搜索:
- Markdown单元格输入(Markdown Source)
- 渲染后的Markdown单元格输出(Rendered Markdown)
- 代码单元格输入(Code Cell Source)
- 代码单元格输出(Cell Output)
笔记本搜索默认过滤代码单元格输入。
连接到远程Jupyter服务器
你可以通过连接到远程Jupyter服务器来将笔记本中的密集计算卸载到其他计算机。一旦连接,代码单元格将在远程服务器上运行而不是本地计算机上。
要连接到远程Jupyter服务器:
- 打开笔记本右上角的内核选择器按钮(或从命令面板运行"Notebook: Select Notebook Kernel"命令)。
- 选择"现有Jupyter服务器"选项以连接到现有的Jupyter服务器。
- 首次连接到现有服务器时,选择"输入正在运行的Jupyter服务器的URL"。
- 当提示"输入正在运行的Jupyter服务器的URL"时,提供服务器的URI(主机名),并使用?token=URL参数包含身份验证令牌。(如果你在VS Code终端中使用身份验证令牌启动服务器,终端输出中通常会显示包含令牌的URL,你可以从中复制它。)或者,你可以在提供URI后指定用户名和密码。
注意:为了增加安全性,微软建议为你的Jupyter服务器配置安全预防措施,如SSL和令牌支持。这有助于确保发送到Jupyter服务器的请求得到身份验证,与远程服务器的连接得到加密。有关如何保护笔记本服务器的指导,请参阅Jupyter文档。
数据科学配置文件模板
配置文件让你快速切换扩展、设置和UI布局,以适应当前的项目或任务。为了帮助你开始使用Jupyter Notebook,你可以使用数据科学配置文件模板,这是一个经过精心策划的配置文件,包含了有用的扩展、设置和代码片段。你可以直接使用配置文件模板,也可以将其作为起点,根据自己的工作流程进行自定义。
你可以通过"配置文件">"创建配置文件..."下拉菜单来选择配置文件模板:
选择配置文件模板后,你可以查看设置和扩展,并根据需要删除个别项目。创建基于模板的新配置文件后,对设置、扩展或UI所做的更改将保留在你的配置文件中。