Existe-t-il un moyen d'envoyer un événement d'interruption clavier dans PyCharm IDE (3.1) en mode débogage?
Malheureusement, il n'existe aucun moyen simple de procéder. Vous devrez utiliser psutil
et le module signal
. Pour que cela fonctionne, vous devez installer psutil
et la meilleure façon de le faire est via pip
:
pip install psutil
Donc, disons que nous avons ici, pièce A:
while True:
try:
time.sleep(3)
print "Zzzz"
time.sleep(3)
print("gong!")
except KeyboardInterrupt as e:
print "Closed by an Interrupt"
break
Et vous exécutez cela dans PyCharm. Assurez-vous que l'interpréteur que vous utilisez a psutils
installé. Tu peux vérifier:
Assurez-vous d'avoir correctement configuré votre interprète:
Si vous n'avez pas installé psutil
, vous pouvez toujours le faire si le Install bouton.
Bon alors, maintenant que nous avons tout configuré, nous pouvons déboguer le programme:
Maintenant, tout ce que nous avons à faire est d'obtenir l'ID du processus, et nous pouvons l'obtenir au tout début du programme:
Alors, allumons notre console et envoyons un signal:
Et si cela fonctionnait correctement, vous devriez voir la fin de la boucle while:
Vous pouvez rationaliser davantage le processus en ajoutant une fonction pour envoyer une interruption dans le script de démarrage de votre console:
Une fois que vous avez terminé, il vous suffit d'appeler interrupt(<pid here>)
pour appeler une interruption clavier sur votre processus.
J'espère que cela répond à votre question.
Il s'agit d'un bogue dans PyCharm. Voir: http://youtrack.jetbrains.com/issue/PY-484
L'interruption du clavier est un SIGINT. Sur les systèmes Unix, vous pouvez soit aller sur la ligne de commande et faire:
$ kill -INT <pid>
ou en python:
import os, signal
os.kill(<pid>,signal.SIGINT)
Comme mentionné dans ce commentaire - Pourquoi cela python interruption du clavier ne fonctionne-t-il pas? (Dans pycharm) :
Dans les versions récentes de PyCharm, vous pouvez activer
Emulate terminal in output console
dans votre configuration d'exécution - cela permet Ctrl + C dans la console Exécuter pour envoyer une interruption clavier.
Testé avec PyCharm 2018.3 (Community Edition):
Cela cassera également la bibliothèque tqdm :
J'ai rencontré ce message lors de la recherche du suivi des bogues de Pycharm pour ce problème: https://youtrack.jetbrains.com/issue/PY-484
Si vous utilisez la version Pycharm 3, cela pourrait aider, cela a fonctionné pour moi.
Un des commentaires dans le tracker: `` J'ai découvert que Ctrl + C finit par arrêter le script en cours d'exécution, mais vous devez d'abord écrire une lettre dans la console pendant son exécution. Cliquez donc dans la fenêtre de la console, appuyez sur n'importe quelle touche, puis appuyez sur Ctrl-C. En d'autres termes, cela ressemble à un problème de mise au point du cadre GUI.