Ipython: Impossible d'échapper à IPython.embed() lorsqu'il est appelé à plusieurs reprises dans la fonction à l'intérieur d'une boucle for

Créé le 20 janv. 2016  ·  3Commentaires  ·  Source: ipython/ipython

J'exécute foo.py partir de la ligne de commande, et cela inclut une fonction avec une boucle for, à l'intérieur de laquelle se trouve une fonction qui a une instruction IPython.embed(). Il s'agit d'initialiser un interpréteur à ce stade de la fonction pour avoir accès à ces variables locales.

Cependant, lorsque vous essayez d'échapper à l'interpréteur intégré, il n'ouvre qu'un nouvel interpréteur (probablement jusqu'à k fois pour la boucle for), verrouillant efficacement ce terminal.

Ce serait bien d'avoir une commande analogue à ipdb de q , qui lève immédiatement une exception et sort vers la CLI dans laquelle foo.py été exécuté.

Commentaire le plus utile

Ce serait bien d'avoir une seule commande qui arrêterait complètement l'exécution du script. Comme l'équivalent de :

  1. %kill_embedded (et oui, bien sûr)
  2. exit
  3. "ctrl + c" (trois fois)

Tous les 3 commentaires

Essayez %kill_embedded - il ne sort pas de votre boucle, mais il devrait effectuer tous les futurs appels à embed() no-ops, afin que le reste de votre script s'exécute jusqu'à la fin.

Ce serait bien d'avoir une seule commande qui arrêterait complètement l'exécution du script. Comme l'équivalent de :

  1. %kill_embedded (et oui, bien sûr)
  2. exit
  3. "ctrl + c" (trois fois)

%exit_raise lèvera une exception dans le contexte externe et votre code se terminera

Cette page vous a été utile?
0 / 5 - 0 notes