Existe-t-il un moyen de forcer par programme un script Python à tomber dans une REPL à un moment arbitraire de son exécution, même si le script a été lancé à partir de la ligne de commande?
J'écris un programme de traçage rapide et sale, que je veux lire les données de stdin ou d'un fichier, les tracer, puis les déposer dans le REPL pour permettre au tracé d'être personnalisé.
python
interactive
dsimcha
la source
la source
J'utilise fréquemment ceci:
la source
pdb
, vous pouvez utiliserinteract
.Voici comment procéder (IPython> v0.11):
Pour IPython <= v0.11:
Vous devez utiliser IPython, la Cadillac des REPLs Python. Voir http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython
De la documentation:
la source
Pour utiliser iPython et les fonctionnalités du débogueur, vous devez utiliser ipdb ,
Vous pouvez l'utiliser de la même manière que pdb, avec l'ajout de:
la source
Vous pouvez lancer le débogueur:
Je ne sais pas à quoi vous voulez faire le REPL, mais le débogueur est très similaire.
la source
Je viens de faire cela dans l'un de mes propres scripts (il fonctionne dans un cadre d'automatisation qui est un énorme PITA à instrumenter):
Placez-le simplement là où vous voulez un point d'arrêt, et vous pouvez vérifier l'état en utilisant la même syntaxe que l'interpréteur python (bien qu'il ne semble pas vous permettre d'importer des modules). Ce n'est pas très élégant, mais il ne nécessite aucune autre configuration.
la source