【问题标题】:Spyder + Python 3.5 - how to debug kernel died, restarting?Spyder + Python 3.5 - 如何调试内核死机,重新启动?
【发布时间】:2019-02-13 23:03:06
【问题描述】:

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

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

由于某种原因,我想调试,但是,由于在任何其他尝试中,python 内核死掉并且需要重新启动(全部自动完成)几次,整个过程变得非常非常慢。

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

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

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

【问题讨论】:

  • (Spyder developer here) 请在我们的问题跟踪器中使用您尝试运行的代码打开一个问题,以便我们更好地了解您在做什么并为您提供帮助修复它,或在必要时修复 Spyder 中的某些内容。这里不适合继续讨论,抱歉。
  • 感谢卡洛斯。可以,但由于我公司的政策,在发布代码时我有很大的限制。我会尽力而为。问题跟踪器 == git?

标签: python pyqt spyder


【解决方案1】:

这个问题被跟踪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 所述

【讨论】:

    【解决方案2】:

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多