¿Hay alguna manera de forzar mediante programación que un script de Python caiga en un REPL en un punto arbitrario de su ejecución, incluso si el script se inició desde la línea de comandos?
Estoy escribiendo un programa de trazado rápido y sucio, que quiero leer datos de stdin o un archivo, trazarlo y luego colocarlo en el REPL para permitir que el trazado se personalice.
python
interactive
dsimcha
fuente
fuente
Con frecuencia uso esto:
fuente
pdb
, puede usarinteract
.Así es como debe hacerlo (IPython> v0.11):
Para IPython <= v0.11:
Debe usar IPython, el Cadillac de Python REPL. Ver http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython
De la documentación:
fuente
Para usar iPython y la funcionalidad del depurador, debe usar ipdb ,
Puede usarlo de la misma manera que pdb, con la adición de:
fuente
Puede iniciar el depurador:
No estoy seguro de para qué quiere el REPL, pero el depurador es muy similar.
fuente
Acabo de hacer esto en uno de mis propios scripts (se ejecuta dentro de un marco de automatización que es un enorme PITA para instrumentar):
Simplemente coloque esto donde desee un punto de interrupción, y puede verificar el estado utilizando la misma sintaxis que el intérprete de Python (aunque no parece permitirle realizar importaciones de módulos). No es muy elegante, pero no requiere ninguna otra configuración.
fuente