当前位置: 首页 > 科技观察

如何在VSCode中调试Python脚本?

时间:2023-03-21 17:57:22 科技观察

【.com速译】调试是检测和移除代码中的错误或意外行为的过程,代码可能会返回一些东西(无论我们是否想要),或者可能根本不起作用,并抛出一些错误在执行期间。那么当我们在代码中发现错误时会发生什么?在JupyterNotebooks中,我们可以将代码拆分成更多的单元,并按顺序执行它们以检查每个步骤。我们还可以在代码中放置大量打印语句,以查看是否一切按计划进行。或者,我们可以使用像%debug这样的神奇命令来打开JupyterNotebook的交互式调试器窗口。最后一种方法与我们调试Python脚本的方式非常相似。在本文中,我将展示如何使用VSCode快速高效地调试Python脚本。最重要的是,您可以将这些方法应用于任何代码。在VSCode中调试可以直接进入调试。首先,我们需要编写一些代码。这可以使用下面的简化脚本来完成。您可以在演示代码时以及它立即抛出错误时看到代码出了什么问题。将熊猫导入为pddf=pd.DataFrame(data={"id":['a','b','c'],"value":[1,2,3]})defmultiply_value(df,multiplier):df=df.copy()df["value"]=df["value"]*multipliermultiplier_list=[1,2,"3"]formultinmultiplier_list:multiply_value(df,mult)第一步打开VSCode,导航到我们要设置项目的目录,新建一个脚本,粘贴上面的代码。单击窗口右上角的“运行”按钮(或右键单击编辑器窗格中的某处并选择“在终端中运行Python文件”)以在终端中运行脚本。我们可以得到运行结果。我们可以尝试从这里修复它,或者直接进行调试。我们可以看到窗格中填充了预期的信息。此外,在发生错误的地方弹出的屏幕,以及它的类型和一些额外信息。这有助于查明错误。让我们看看发生错误的函数,这里我们可以看到乘数的值为“3”,它应该是一个数字才能进行乘法运算。虽然这个示例案例很简单,因为我们自己定义了列表,但在更复杂的脚本中,很容易丢失每个变量存储的内容。特别是当值是从其他地方填充时,例如数据库。调试控制台不同于终端,我们只能在脚本中断时看到打印/日志和错误消息,而在调试控制台中,我们可以交互工作并探索变量。每当调试器遇到断点或发生错误时,在调试控制台中,我们可以使用变量的当前状态在该步骤上执行命令。在上图中,我们检查了mult变量的当前值,打印df并检查我们实际上可以将列乘以3。当脚本崩溃时,此功能非常有用。例如,我们可以在调试控制台中运行以下命令:df["value"]*"3"来观察我们之前遇到的相同错误。虽然这可以帮助我们调试脚本,但在调试更复杂的情况时了解更多有关方法的信息也很有帮助。断点类型VSCode提供三种类型的断点,每种都有不同的用途。要选择它们,我们首先创建一个普通断点,然后右键单击它并选择“编辑断点...”。表达式-当条件满足时,断点将触发并停止代码的执行。在下图中,我们将条件设置为mult==2。在变量窗格中,我们确实可以看到代码在满足条件时停止执行。此外,表达式断点在其红点处以“=”为特征。命中次数-当代码被命中X次时,断点将停止执行。例如,我们可以将此断点放置在For循环中,并为其赋值2。这样,代码将停在与上述表达式断点相同的位置。日志消息-与前两种类型的断点不同,这种断点不会停止代码执行。它可用于将一些消息打印到调试控制台的日志中。我们已将消息指定为Currentmult:{mult},它会打印到控制台。请注意,代码中要计算的表达式(变量)需要用大括号括起来。正如我们所看到的,直到预期的错误发生,代码的执行才会中断。当然,您也可以通过右键单击并选择“禁用断点”来暂时禁用断点。调试配置文件调试配置在调试会话期间驱动VS代码的行为。配置在launch.json文件中定义,该文件存储在.我们工作区的vscode文件夹。要访问JSON文件,我们可以在首次打开VSCode中的调试窗口时单击“创建launch.JSON文件”,或者只需单击用于启动调试会话的绿色播放按钮旁边的“齿轮”图标。我们可以用配置文件做什么?设置环境变量是一个经常派上用场的例子。假设我们的代码是使用一些调度程序部署和运行的,例如气流(远不止于此,但现在让我们假设这种简化是可以接受的)。然后我们使用一组环境变量来控制脚本的行为。比如在ETL脚本中,我们可以使用env变量来控制是否扩展特性。当我们尝试在本地调试代码时,我们的系统中不会有那些env变量,因为它们是由airflow处理的。因此,一种选择是在全球范围内添加这些措施,但这可能会在以后导致混乱。或者,我们可以使用launch.json配置文件为调试环境提供一组环境变量。为此,我们按“齿轮”图标打开文件并通过添加第10行的内容对其进行修改。{"version":"0.2.0","configurations":[{"name":"Python:当前文件”,“type”:“python”,“request”:“launch”,“program”:“${file}”,“console”:“integratedTerminal”,“env”:{“RUN_TYPE”:“prod"},}]}当我们运行下一个调试会话时,我们可以直接访问RUN_type环境变量。本文结语展示了如何快速使用VSCode调试Python脚本。使用本文中提到的几种技术,您可以快速缩小潜在错误的来源并在交互式调试控制台中尝试不同的修复。如果你在工作中没有遇到过调试脚本,学习这个技能是非常重要的。虽然本文特定于VSCode,但大多数IDE(例如PyCharm)都提供类似的功能集。【翻译稿件,合作网站转载请注明原译者和出处.com】