Spyder + Python 3.5 - 如何调试内核死机,重启?

问题描述 投票:2回答:2

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

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

出于某种原因,我想调试,然而,由于在任何其他尝试中,python内核死亡并且需要多次重启(全部自动完成),因此整个过程变得更加缓慢。

也就是说,每当我尝试一些可能持续5秒的东西时,我最终会花一分钟时间。

谁知道在哪里可以看到导致这些不断死亡/重生圈子的原因?

我一直在使用spyder一段时间以前我从未经历过这种行为,所以我觉得它可能与PyQt有关,但这就是我能走多远。

python pyqt spyder
2个回答
3
投票

这个问题跟踪here

你可以在那里学习所有细节,但简而言之,当从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_())

if/then检查QApplication的存在避免了一个分段错误,如果一个人试图一次启动多个实例就会发生,如here所解释的那样


1
投票

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

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.