¿Hay alguna manera de enviar una interrupción de teclado evento en PyCharm IDE (3.1), mientras que en el modo de depuración?

  • Necesito la misma cosa. Necesito ser capaz de detener correctamente una secuencia de comandos con el manejo de código mediante el uso de CTRL-C o similar, no sólo utiliza el botón Stop.
InformationsquelleAutor arbulgazar | 2014-04-07

5 Comentarios

  1. 18

    Lamentablemente, no hay una manera simple de hacer esto. Usted tendrá que utilizar psutil y la signal módulo. Para que esto funcione se necesita para instalar psutil y la mejor manera de hacerlo es a través de pip:

    pip install psutil

    Así, supongamos que tenemos aquí, exhiben Una:

    while True:
        try:
            time.sleep(3)
            print "Zzzz"
            time.sleep(3)
            print("gong!")
        except KeyboardInterrupt as e:
            print "Closed by an Interrupt"
            break

    Y ejecuta esto en PyCharm. Asegúrese de que el intérprete que está utilizando tiene psutils instalado. Usted puede comprobar:

    Interrupción de teclado en modo de depuración PyCharm

    Asegúrese de que ha establecido su intérprete correctamente:

    Interrupción de teclado en modo de depuración PyCharm

    Si usted no ha instalado psutil, siempre se puede hacer así, a pesar de la Instalar botón.

    Bueno, así que ahora que tenemos todo configurado, permite depurar el programa:

    Interrupción de teclado en modo de depuración PyCharm

    Ahora todo lo que tienes que hacer es obtener el IDENTIFICADOR de proceso, y podemos conseguir que en el inicio del programa:

    Interrupción de teclado en modo de depuración PyCharm

    Así, permite que el fuego de nuestra consola, y enviar una señal:

    Interrupción de teclado en modo de depuración PyCharm

    Y si que ha funcionado correctamente, debería ver el bucle while termina:

    Interrupción de teclado en modo de depuración PyCharm

    Usted puede agilizar el proceso mediante la adición de una función para enviar una interrupción en la secuencia de comandos inicial para la consola:

    Interrupción de teclado en modo de depuración PyCharm

    Una vez que haya terminado con todo eso, todo lo que usted necesita hacer es llamar interrupt(<pid here>) para llamar a una interrupción de teclado en el proceso.

    Espero que esto responda a su pregunta.

    • gracias! Seguro que es una respuesta. La esperanza de Jetbrains va a producir de manera más cómoda para esto en sus futuras versiones.
    • Me alegro de que te haya gustado. Pero esto es algo tedioso en PyCharm, y espero que esto se solucione rápidamente.
    • Es allí una manera de asir el PID en la secuencia de comandos de inicio de alguna manera? En las aplicaciones de impresión que mucho, realmente no se puede mirar en el principio de que el registro de la consola de media hora después del inicio.
    • No sé si es que la hay, por lo tanto, este es un error.
    • Muchas gracias, nadie podía esperar una respuesta más detallada!
  2. 12

    PyCharm Dejar de botón envía ahora SIGINT tanto en modo de depuración y modo de ejecución. Si SIGINT no terminar el programa, el Dejar de botón cambia su señal a SIGKILL. También cambia su icono a una forma del cráneo:

    Interrupción de teclado en modo de depuración PyCharm

    • Alguna idea sobre cómo enviar siempre SIGKILL? La calavera aparece cada vez que intento detener la depuración, es bastante molesto.
    • El envío de señal SIGKILL, por defecto, es una mala idea. Podría dejar al niño de ejecución de los procesos y evitar las limpiezas. De todos modos si usted decide que usted necesita de todos modos, usted puede tratar de cerrar el programa (botón con una cruz, yo.e, Ctrl+F4).
    • Podría ser una mala idea, pero eso es lo que PyCharm hace por defecto, si el proceso no se puede detener. En mi caso, que, literalmente, cada vez que pulse el botón stop. Tal vez el envío de una señal diferente sería mejor. Pero no importa, ¿cómo hacerlo en PyCharm?
    • ¿Sabe usted en qué versión es esta característica que se presenta? Parece SIGINT es enviado en mi Mac, pero con Windows PyCharm 2017.1.5 el programa se termina inmediatamente en la depuración y modo de ejecución.
  3. 8

    Este es un error en PyCharm. Ver: http://youtrack.jetbrains.com/issue/PY-4840

    Interrupción de teclado es un SIGINT. En los sistemas unix usted puede ir a la línea de comandos y hacer:

    $ kill -INT <pid>

    o en python:

    import os, signal
    os.kill(<pid>,signal.SIGINT)
    • El error de PyCharm estaba cerrada, como fija tratando de obtener los vuelve a abrir.
    • Bonita y sencilla solución aquí, esta respuesta de las necesidades más upvotes.
  4. 1

    He venido a través de este mensaje, mientras que la búsqueda Pycharm del error de seguimiento para este problema:
    https://youtrack.jetbrains.com/issue/PY-4840

    Si usted está utilizando la versión Pycharm 3, este puede ser de ayuda, a mí me funcionó.

    Uno de los comentarios en el tracker:
    ‘En realidad he descubierto que Ctrl+C ¿, finalmente, detener la ejecución del script, pero primero tiene que escribir una carta en la consola mientras se está ejecutando. Así que haga clic en la ventana de la consola, presione cualquier tecla y, a continuación, presione Ctrl-C. En otras palabras, parece un problema de la GUI marco de conseguir el enfoque.’

    • Intenta esto? Porque no me funciona

Dejar respuesta

Please enter your comment!
Please enter your name here