Jupyter Notebook调试技巧:使用%debug命令快速定位Python代码错误

[id_1088077532]

Jupyter Notebook调试技巧:使用%debug命令快速定位Python代码错误

调试是一个过程,用于检测和删除代码中的错误或非预期行为。代码可能会返回某些东西,这些东西可能是我们想要的,也可能是我们不想要的。代码还有可能根本无法正常工作,并且在执行过程中会抛出一些错误。那么,当我们在代码中发现一个 bug 时,会发生什么呢?

在 Jupyter Notebooks 里,我们能够把代码划分成更多的单元,然后按照顺序去执行这些单元,以此来检查每一个步骤。同时,我们也可以在代码当中放置很多 print 语句,仅仅是为了查看是否所有的事情都按照计划在进行。我们可以使用一些特殊的命令,例如可以打开 Jupyter Notebook 的交互式调试器窗口的 % debug 命令。

最后一种方法和我们调试 Python 脚本的方式很相似。在本文里,我会展示怎样利用 VS Code 快速且有效地调试 Python 脚本。最好的状况是,你能够把这些方法运用到任何代码中。

在 VS Code 中调试

让我们直接开始调试。首先,我们得写一些代码。通过下面这个简化的脚本能够完成此项工作。在演示过程中,我们可以看到代码存在的问题,以及代码在何时会立刻抛出错误。

import pandas as pd

df 是一个数据框,它的数据为 {"id": ['a', 'b', 'c']} 。
"value": [1, 2, 3]})

定义一个函数 multiply_value,它接受两个参数 df 和 multiplier,用于对 df 进行某种操作并返回结果。
df = df.copy()
df 中的“value”这一列的值等于“value”这一列原本的值乘以 multiplier

multiplier_list = [1, 2, "3"]

for mult in multiplier_list:
multiply_value(df, mult)

第一步是打开 VS Code 。接着导航到我们希望设置项目的那个目录。之后创建一个新的脚本。最后粘贴上面的代码。

点击窗口右上角的运行按钮,这样可以在终端中运行脚本;或者右键单击编辑器窗格中的某个地方,然后选择“Run Python File in Terminal”,也能在终端中运行脚本。之后我们可以得到运行结果。

​

​

我们可以尝试从这里解决它,或者直接进入调试阶段。

​

​

我们能够看到窗格中填充了预期的信息。并且,在出现错误的地方弹出的屏幕,以及它的类型和一些额外的信息。这些对于确定 bug 很有帮助。让我们来看一下错误发生的函数,在这个函数中,我们可以看到乘数的值是“3”,然而它应该是一个数字才能进行乘法运算。

这个事例情况较为简单,原因是我们自己定义了列表。然而在更复杂的脚本里,它确实很容易丢失每个变量所存储的内容。尤其当值是从其他地方填充的时候,比如从数据库中。

​

​

调试控制台和终端不一样。在终端里,我们仅能看到打印/日志以及脚本中断时的错误消息。然而在调试控制台中,我们能够进行交互式工作并探索变量。每当调试器碰到断点或者出现错误时,在调试控制台中,我们可以利用该步骤上变量的当前状态来执行命令。在上述图中,我们对 mult 变量的当前值进行了检查,接着打印了 df,并且检查了我们是否确实能够将列乘以 3。

这个功能在脚本出现崩溃情况的时候是很有用的。比如说,我们能够在调试控制台里运行如下这些命令:

df[“value”] * “3”

观察之前遇到过的相同错误。这样做能帮我们调试脚本。然而,在调试更复杂的案例时,了解更多方法是很有帮助的。

断点类型

VS Code 提供了三种类型的断点,且每种断点都具备不同的用途。若要选择这些断点,我们首先需创建一个普通的断点,接着右键点击该断点,并选择“Edit breakpoint…”。

​

​

​

​

您可以通过右键单击并选择“禁用断点”这一操作来临时禁用一个断点。

调试配置文件

调试配置在调试会话过程中会驱动 VS 代码的行为。配置是在 launch.json 文件中进行定义的,这个文件被存储在我们工作区的 vscode 文件夹里。要访问 JSON 文件,我们在 VS Code 中首次打开调试窗口时,可以进行以下操作:一是单击“create a launch.JSON file”;二是只需单击用于启动调试会话的绿色播放按钮旁边的“gear”图标。

使用配置文件能做什么呢?设置环境变量是一个常用的例子。假如我们的代码是通过某个调度程序来部署和运行的,比如 Airflow(实际情况远不止如此,但现在我们暂且认为这样的简化是可行的)。接着,我们借助一组 env 变量来掌控脚本的行为。在 ETL 脚本里,我们能够利用 env 变量去掌控是否对特性进行扩展。

当我们尝试在本地调试代码时,我们的系统中不会存在那些 env 变量,因为这些变量是由气流来进行处理的。所以,一种做法是在全球范围内增添这些措施,然而这或许会在以后引发混乱。另外,我们可以借助 launch.json 配置文件来为调试环境提供一组 env 变量。

为此,我们点击“gear”图标以打开文件,并且通过增添第 10 行的内容来对其进行修改。

{
"version": "0.2.0",
"configurations": [
{
"name" 为 "Python: 当前文件"
"type": "python",
"request": "launch",
"program": "${file}",
"console" 的意思是“集成终端”。
"env": {"RUN_TYPE": "prod"},
}
]
}

当我们运行下一个调试会话的时候,我们能够直接对 RUN_type env 变量进行访问。

结语

本文展示了怎样快速利用 VS Code 来调试 Python 脚本。通过本文提及的几种技术,您能够快速地缩小潜在错误的出处,并且可以在交互式调试控制台中尝试各种不同的修复办法。

如果你在工作中未曾遇到过调试脚本,那么学会这种技能是极为重要的。本文虽针对的是 VS Code,但大多数的集成开发环境(比如 PyCharm)都具备类似的功能集合。

51CTO 进行的译稿,合作站点如需转载,需注明原文译者以及出处为 51CTO.com。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读