You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code Python调试器执行列表推导报NameError,仅公司内部Python触发

调试控制台列表推导式NameError问题分析

问题场景

在VS Code Python调试器(基于debugpy v1.6.6)中断程序后,在调试控制台执行以下代码:

x = 1
[test for test in range(10) if x]

执行第二行时触发报错:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 1, in <listcomp>
NameError: name 'x' is not defined

环境信息

  • VS Code版本:1.79.2
  • debugpy版本:1.6.6
  • Python版本:3.8

补充测试结果

经过进一步测试,该错误仅在使用公司内部Python可执行文件时出现,使用/bin/python或Anaconda安装的Python则无此问题,申请关闭此问题。

问题原因

这个问题属于调试器交互式执行时的列表推导式作用域绑定异常,具体原因如下:

  1. 早期Python调试器在处理交互式代码片段时,列表推导式会被视为独立代码块,无法正确捕获调试控制台的局部变量,导致作用域隔离引发NameError。虽然官方在2018年左右修复过类似问题,但你的情况存在环境特殊性。
  2. 问题根源出在公司内部定制的Python环境:内部版本可能对Python的作用域处理逻辑、debugpy的集成做了特殊修改,或者缺失了官方环境中用于调试作用域绑定的必要补丁,导致旧的作用域问题复现。
  3. 而/bin/python和Anaconda的Python是官方标准环境,完整保留了debugpy所需的作用域处理逻辑,因此不会触发该错误。

内容的提问来源于stack exchange,提问作者extremeaxe5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:37:43