Ipython: Kann IPython.embed() nicht entkommen, wenn es wiederholt innerhalb einer Funktion innerhalb einer for-Schleife aufgerufen wird

Erstellt am 20. Jan. 2016  ·  3Kommentare  ·  Quelle: ipython/ipython

Ich führe foo.py von der Befehlszeile aus und es enthält eine Funktion mit einer for-Schleife, in der sich eine Funktion mit einer IPython.embed()-Anweisung befindet. Dies dient dazu, einen Interpreter an diesem Punkt innerhalb der Funktion zu initialisieren, um Zugriff auf diese lokalen Variablen zu haben.

Wenn Sie jedoch versuchen, dem eingebetteten Interpreter zu entkommen, wird nur ein neuer Interpreter geöffnet (vermutlich bis zu k-mal für die for-Schleife), wodurch dieses Terminal effektiv gesperrt wird.

Es wäre schön, einen ähnlichen Befehl wie ipdb q , der sofort eine Ausnahme auslöst und zu der CLI verläßt, in der foo.py ausgeführt wurde.

Hilfreichster Kommentar

Es wäre schön, einen einzigen Befehl zu haben, der die Ausführung des Skripts vollständig stoppen würde. Wie das Äquivalent von:

  1. %kill_embedded (und ja, sicher)
  2. exit
  3. "Strg + c" (dreimal)

Alle 3 Kommentare

Versuchen Sie es mit %kill_embedded - es bricht nicht aus Ihrer Schleife aus, aber es sollte alle zukünftigen Aufrufe an embed() No-Ops machen, damit der Rest Ihres Skripts vollständig ausgeführt wird.

Es wäre schön, einen einzigen Befehl zu haben, der die Ausführung des Skripts vollständig stoppen würde. Wie das Äquivalent von:

  1. %kill_embedded (und ja, sicher)
  2. exit
  3. "Strg + c" (dreimal)

%exit_raise löst eine Ausnahme im äußeren Kontext aus und Ihr Code wird beendet

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen