IntelliJ控制台删除列表时出现KeyError,程序运行无异常
问题:删除变量后IntelliJ控制台出现KeyError但程序运行正常
代码示例
with open("albums.txt", "r") as albums: mylist = [] for line in albums: # data row should consist of (artist, album, year, song) artist_field, album_field, year_field, song_field = tuple(line.strip('\n').split('\t')) year_field = int(year_field) mylist.append((artist_field, album_field, year_field, song_field)) song_list = [] for i in [5, 10, 26, 28, 41]: song_list.append(mylist[i]) del mylist print(song_list)
问题描述
我尝试删除mylist变量后,发现只有IntelliJ控制台会抛出错误,但程序本身运行完全正常。mylist明明已经被成功删除,程序逻辑也没问题,我搞不懂这个错误的原因。
报错信息
回溯(最近的调用最后):文件
"C:\Users\G\AppData\Roaming\JetBrains\IntelliJIdea2022.2\plugins\python\helpers\pydev_pydevd_bundle\pydevd_thrift.py",
第241行,在frame_vars_to_struct函数中
v = frame_f_locals[k]
KeyError: 'mylist'
意外错误,已安全恢复。
原因与解决方法
这个错误和你的代码逻辑无关,是IntelliJ自带的Python调试插件(PyDev)的内部问题:
错误根源:PyDev调试器会追踪当前作用域内的变量,用于在控制台或调试面板展示。当你用
del mylist删除变量后,调试器内部的变量追踪列表里还保留着mylist的条目,尝试读取这个已被删除的变量时就触发了KeyError。插件已经做了“安全恢复”处理,所以不会影响你的程序运行。解决办法:
- 调试期间尽量避免删除需要被调试器追踪的变量
- 将IntelliJ的Python插件更新到最新版本,这类小bug通常会在后续版本中修复
内容的提问来源于stack exchange,提问作者Gaff
相关产品推荐
相关产品推荐

