Spyder + Python 3.5: ¿cómo se debug el kernel fallido y se reinicia?

Estoy trabajando por primera vez en la implementación de una GUI muy simple en PyQt5 , que incorpora un gráfico de matplotlib y algunos botones para la interacción.

Realmente no sé cómo trabajar con las clases, así que estoy cometiendo muchos errores, es decir, incluso si la funcionalidad es simple, tengo que recorrer mucho entre pequeñas correcciones y verificación.

Por alguna razón, me gustaría depurar, sin embargo, todo el proceso se hace mucho, mucho más lento por el hecho de que en cualquier otro bash, el kernel de Python muere y necesita reiniciarse (todo esto de forma automática) varias veces.

Es decir, cada vez que bash algo que debería durar unos 5 segundos, termino gastando un minuto.

¿Alguien sabe dónde mirar para detectar qué está causando estos círculos de muerte / renacimiento constantes?

He estado usando spyder desde hace algún tiempo y nunca antes experimenté este comportamiento, así que estoy convencido de que podría tener que ver con PyQt , pero eso es todo lo lejos que puedo llegar.

Este problema se rastrea aquí

Puede aprender todos los detalles allí, pero en pocas palabras cuando se ejecuta desde el interior de spyder , que en sí mismo es una aplicación de QApplication , el bucle principal debe leer:

 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_()) 

El control if/then sobre la existencia de una aplicación QApplication evita un fallo de segmentación que ocurre si uno intenta iniciar varias instancias a la vez, como se explica aquí

Tuve un problema similar y descubrí que mi aplicación solo funcionaba cuando la configuración de gráficos dentro de Spyder estaba configurada en línea. Esto se puede hacer en Herramientas -> Preferencias -> Consola de IPython -> Gráficos, ahora cambie el Backends a en línea.

Espero que esto ayude.