2010-03-17 6 views
9

J'ai un script python qui utilise plt.show() comme dernière instruction. Quand il fonctionne, IDLE se bloque juste après la dernière instruction. Je reçois l'image mais je ne reçois pas l'invite.Comment faire pour arrêter l'exécution du programme Python dans IDLE

Sur d'autres scripts j'utilise généralement ctrl-c pour casser le programme (parfois ne fonctionne pas immédiatement) mais comment puis-je obtenir l'invite avec le plt.show()? Ctrl-c ne fonctionne pas ...

Existe-t-il d'autres moyens d'arrêter le programme?

Ceci est IDLE sur Windows, si cela fait une différence.

+2

certaines options ici: http://stackoverflow.com/questions/1219394/ – bernie

+0

'Ctrl + Pause | Break'? –

Répondre

4

J'ai rencontré ce problème avec IDLE et matplotlib lors de leur utilisation sous Windows. Je ne connais pas la cause exacte, mais Ctrl-c quelques fois a généralement fonctionné pour moi. Si cela ne fonctionne pas pour vous, vous pouvez utiliser l'interpréteur normal au lieu d'écrire votre intrigue directement dans un fichier à la place de l'écran.

C'est l'une de ces périodes (abondantes) où IDLE ne se comporte pas comme un script Python normal ou une session d'interpréteur. Pour cette raison, j'évite habituellement IDLE.

+0

Qu'est-ce que vous utilisez à la place? – greye

+0

Malheureusement, les options sur Windows ne sont pas géniales. J'utilise l'interpréteur interactif directement (malgré que cmd.exe ne soit pas si gentil) et j'appelle Python de gvim pour exécuter des scripts. N'importe quel nombre d'éditeurs et d'EDI peuvent appeler Python directement, et beaucoup d'entre eux sont listés sur http://wiki.python.org/moin/IntegratedDevelopmentEnvironments. iPython peut souffrir de quelques-uns des mêmes problèmes de IDLE, mais je pense qu'il fait tout son possible pour que matplotlib fonctionne (je ne l'utilise jamais moi-même, donc je ne peux pas le promettre). –

2

Lorsque vous utilisez plt.show(), le sous-processus python entre dans la boucle d'événements de la boîte à outils GUI et se bloque jusqu'à la fermeture de la boucle d'événements. Quand il se termine, vous obtenez l'invite de retour.

Si vous utilisez le backend TkAgg, vous devrez déplacer votre souris sur une figure après avoir appuyé sur Ctrl + C. Cela provoquera l'arrêt de la boucle d'événement. (Tkinter a ses bizarreries)

Alternativement, IdleX offre un support Matplotlib avec IDLE en utilisant l'extension EventLoop.py. Vous pouvez afficher et interagir avec les chiffres sans utiliser plt.show(). Assurez-vous de régler plt.interactive(True) avant de générer des chiffres.

5

Ctrl + F6 (Restart shell)

ou Shell-> Redémarrer Shell

1

j'avais même problème dans Canopy Python Editor, et j'ai pu interrompre la session python avec CTRL+. (bouton "dot"). J'espère que cela aide, ou ils font probablement les choses de la même manière

Questions connexes