python - mac - Depuración de shell interactiva con pycharm
pycharm professional (8)
Soy nuevo en PyCharm. He estado usando IDLE durante mucho tiempo.
Es muy conveniente usar objetos de Python después de la ejecución del script en IDLE. ¿Hay alguna forma de usar objetos de script después de su ejecución con shell interactivo de Python utilizando PyCharm?
Por ejemplo, tenemos un proyecto ''test'' con un archivo ''test.py'':
a = ''123''
print a
Después de la ejecución podemos obtener el resultado:
123
Process finished with exit code 0
¿Cómo puedo usar la cadena ''a'' con shell interactivo?
Deja la línea de comandos abierta después de ejecutar
Para cualquier persona que aún tenga este problema: vaya al menú Ejecutar / Depurar, elija Editar configuración, marque la casilla ''Mostrar línea de comando'', esto le permitirá ingresar parámetros en la consola en el indicador >>> y probar su función.
Configuración global
Para hacer que este cambio se aplique a todos sus archivos .py (ya que esta casilla de verificación solo se aplica al archivo actual en el que está trabajando), vaya a: Editar configuración, en la ventana emergente verá un árbol de menú a la izquierda, seleccione Predeterminados , luego Python, luego marque la casilla ''Mostrar línea de comando'', esto hará que sea la configuración predeterminada cada vez que abra un archivo .py (esta característica debería estar activada de forma predeterminada)
Shell incorporado de Python para la sesión de depuración actual
- Establezca un punto de interrupción en la línea de interés en su código (es decir, haciendo clic en el margen), e inicie la depuración (haga clic con el botón derecho en el editor y luego seleccione Depurar myfile.py ... ).
- Cuando se alcanza el punto de interrupción, ubique la pestaña Debug > Console y luego haga clic en el ícono Mostrar línea de comando (ver captura de pantalla).
Esto habilitará un shell de Python (observe el >>>
verde en la captura de pantalla) donde puede acceder a todas las variables en el alcance actual y hacer todo lo que normalmente hace en el shell de Python.
En las versiones recientes de pycharm, obtiene el intérprete completo de ipython en lugar del shell de python plano (si está instalado ipython).
La ventana de expresión de evaluación
Como una alternativa más cómoda, si solo necesita inspeccionar algunas variables, acceder a los miembros o llamar a métodos en un objeto dentro del alcance, una vez que se alcanza un punto de interrupción, seleccione una expresión en el alcance actual, haga clic con el botón derecho -> Evaluar expresión (o use la tecla de acceso directo que se muestra en el menú en Ejecutar → Evaluar expresión ... ), edite según sea necesario; puede escribir cualquier expresión de Python, con finalización automática disponible, y luego presione Entrar (o haga clic en Evaluar ) para inspeccionar el resultado.
Se admiten expresiones múltiples y multilínea: para obtener una versión multilínea del cuadro de diálogo Inspeccionar, haga clic en el modo Fragmento de código o seleccione más de una línea de código en el editor y luego evalúe la expresión. Puede asignar valores a las variables existentes (no se pueden definir las nuevas) y ejecutar fragmentos de código completos.
Pase el mouse sobre las variables
Para ver el valor de una variable después de alcanzar un punto de interrupción en el modo de depuración, pase el puntero del mouse sobre la variable (1-2 segundos) y el valor se mostrará en una información sobre herramientas.
La sugerencia contendrá un icono: al hacer clic en él, se abrirá el inspector en una ventana emergente.
Para las variables en el alcance, el inspector se muestra en el panel inferior en Debug > Debugger .
*actualizar
Desde su actualización, creo que esta pregunta SO proporciona al menos una respuesta perfecta .
Permítame escribirlo aquí un poco más paso a paso que la respuesta que vinculé.
- Herramientas -> Ejecutar consola de Python
- importe su script para
import myscript
(sin .py) (si desea un nombre corto, useimport myscript as m
- (Es posible que deba ejecutar
main()
si tiene un bloqueif __name__ == ''__main__''
) - como en tu pregunta,
a
está disponible enmyscript.a
- si quiere, ejecute el script nuevamente con
myscript = reload(myscript)
*original
En PyCharm 3.0 puedes hacer lo siguiente:
- Herramientas -> Ejecutar consola de Python
- Herramientas -> Abrir Terminal (desde donde puedes iniciar python o hacer lo que sea)
¿Es esto lo que estás buscando? Si no es así, inténtalos y dime en qué se diferencia eso de lo que quieres.
Encontré la mejor respuesta en: Interactuar con el programa después de la ejecución.
Citando la respuesta a continuación:
+++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
Desde la salida de python --help:
-i: inspeccionar interactivamente después de ejecutar el script; fuerza un aviso, incluso si la entrada estándar no parece ser un terminal; también PYTHONINSPECT = x
Para configurar la opción de intérprete en PyCharm, vaya a Ejecutar | Editar configuración
+++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
Lo probé y funciona, simplemente use "-i" (sin las comillas) como "Opciones de intérprete". Tenga en cuenta que si solo cambia los valores predeterminados en las configuraciones de ejecución / depuración, es posible que no tenga efecto inmediato para los scripts que ya ha ejecutado anteriormente; Tendrá que editar las configuraciones de esos scripts uno por uno.
Encontré respuestas anteriores de Piga-fetta, Games Brainiac y kobejohn útiles, pero no satisfactorias . Así que aquí proporciono una tercera opción:
Cargando código seleccionado en la consola (mi sugerencia)
Use Mayús + Alt + E para cargar el código seleccionado o la línea en la que se coloca el cursor en la consola y ejecútelo inmediatamente. Esto también tiene algunas desventajas:
- Debe seleccionar todo el archivo si necesita ejecutar todo el archivo.
- El código se sigue ejecutando incluso si encuentra un error.
Pero a cambio, obtenemos una función que es mejor que IDLE (en mi opinión): poder ejecutar su código una selección a la vez.
Lea sobre esto here .
Uso de puntos de interrupción y evaluación de expresiones ( Alt - F8 ) (sugerido por Piga-fetta)
Esto es muy útil en aplicaciones grandes donde necesitamos depurar en ciertas ubicaciones en el código, pero no tan útil para la codificación interactiva. Así que esto no es lo que queremos.
Usando Herramientas -> Ejecutar Python Console (sugerido por Games Brainiac y kobejohn)
Esto es lo que queremos, pero es un poco incómodo, especialmente si el módulo que queremos ejecutar no está en el directorio raíz del proyecto.
No mencionado anteriormente:
Si desea usar una variable durante la ejecución, por ejemplo, cuando establece un punto de interrupción y luego experimenta con las funciones de llamada en objetos en el alcance actual, PyCharm tiene una ventana emergente '' Evaluar expresión (Alt-F8) ''.
En esta ventana, puede llamar a funciones y ver la salida. Código completado también funciona. Esta ventana también tiene un "modo de fragmento de código", solo estoy investigando lo que significa, ¿puedes definir funciones temporales aquí?
(Estoy usando PyCharm 3.0.1 Community Edition)
Otra alternativa es simplemente usar el mismo comando que Spyder usa para ejecutar "interactivamente" un script:
>>> runfile(''myscript.py'')
Luego puede abrir el explorador de variables para la consola interactiva y volver a ejecutar el script ejecutando nuevamente el comando anterior. Muy similar al flujo de trabajo de Spyder. Todos los otros métodos anteriores lo dejarán con un indicador de consola interactiva, pero no la opción de abrir un explorador de variables, por lo que si está buscando ese tipo de función, intente lo anterior.
Simplemente puede usar la Consola de Python tanto en PyCharm 2 como en PyCharm 3. Y simplemente puede importar ya que la raíz de su proyecto ya está agregada a su PYTHONPATH
:
Así que déjame demostrarte a través de algunas capturas de pantalla:
1. Hacer un archivo console.py
en el directorio raíz.
2. Abrir la consola de Python dentro de PyCharm
3. Importar variable desde el archivo console.py
Y allí, ha importado su variable con éxito.