Spyder + Python 3.5 - 如何调试内核死了,重新启动



我第一次致力于在PyQt5中实现一个非常简单的GUI,它嵌入了一个matplotlib的情节和几个用于交互的按钮。

我真的不知道如何使用类,所以我犯了很多错误,即即使功能很简单,我也必须在小更正和验证之间进行很多迭代。

出于某种原因,我想调试,但是,整个过程要慢得多,因为在任何其他尝试中,python内核都会死亡,并且需要重新启动(全部自动完成(几次。

也就是说,每次我尝试应该持续 5 秒的东西时,我最终都会花一分钟。

有人知道在哪里寻找导致这些不断死亡/重生循环的原因吗?

我已经使用spyder一段时间了,我以前从未经历过这种行为,所以我很想这可能与PyQt有关,但这就是我能走多远。

此问题在此处跟踪

您可以在那里了解所有细节,但简而言之,当从 spyder 内部运行时 - 这本身就是一个QApplication,主循环应为:

if __name__ == '__main__':
import sys
from PyQt5 import QtWidgets
fig1 = Figure()
if not QtWidgets.QApplication.instance():
    app = QtWidgets.QApplication(sys.argv)
else:
    app = QtWidgets.QApplication.instance() 
main = Main()
main.addmpl(fig1)
main.show()
sys.exit(app.exec_())

QApplication是否存在的if/then检查避免了分段错误,如果尝试一次启动多个实例,则会发生分段错误,如此处所述

我遇到了类似的问题,发现我的应用程序仅在Spyder内部的图形设置设置为内联时才有效。这可以在工具 -> 首选项 -> IPython 控制台 -> 图形中完成,现在将后端更改为内联。

希望这有帮助。

最新更新