debugging Spyder调试器在第二次重新启动代码时冻结

lxkprmvk  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(119)

我的任务是从头开始重复运行代码。由于我不想运行代码到最后,我设置了一个breakpoint()命令。但是,当代码第二次从调试模式调用时,Spyder冻结了。为了演示,一个简单的程序就足够了:

print('Hello World!')
breakpoint()

启动Spyder后,我通过F5启动了这个小程序。一切正常,我进入了调试模式。现在,我再次按F5,代码从调试模式正确地重新启动。再次按F5后,代码没有重新启动,IDE冻结。无论如何,不可能再次从调试模式重新运行代码。按红色按钮中断内核(见下面的屏幕截图)没有帮助。尝试通过!q退出调试模式不会退出调试模式。重新运行代码的唯一可能性是相当麻烦的,例如,我必须重新启动内核(Ctrl + .),这需要一段时间。在这种情况下如何调试代码?
这是IDE的错误还是预期的行为?如何通过在调试模式下尽可能频繁地按下简单的键来重新启动代码?
这是Spyder控制台的屏幕截图,添加了红色注解。

我使用最新版本的WinPython与最新的Spyder 5.4.0,Python 3.10.4 64位,Qt 5.15.2,PyQt5 5.15.6,Windows 10Pro版本21H2。该问题也出现在Spyder 5.3.3一个similar problem(或可能相同)出现在不同的Python版本。

x6yk4ghg

x6yk4ghg1#

经过多次试用,我注意到IPython Console有一些奇怪的地方,我注意到当它在运行一段代码后挂起时,如果我删除所有用户变量,它工作得很好。
然后我试着在执行前删除所有变量,它工作得很好。
因此,我发现一个对我有效的解决方案是转到首选项-〉运行-〉,并取消选中“执行前删除所有变量”选项
这是相当烦人的,因为我必须手动做,每次运行前,但这样的spyder不会出现挂起了!我希望Spyder的开发人员将解决它很快。

我在任何脚本的开头键入以下几行,就自动解决了这个问题,灵感来自问题Code to clear console and variables in Spyder

try:
    from IPython import get_ipython
    get_ipython().magic('clear')
    get_ipython().magic('reset -f')
    import matplotlib.pyplot as plt
    plt.close('all')
except:
    pass

类似于Matlab,在Matlab中,您通常以

clc
close all
clear all

相关问题