Ipython: forループ内の関数内で繰り返し呼び出された場合、IPython.embed()をエスケープできません

作成日 2016年01月20日  ·  3コメント  ·  ソース: ipython/ipython

コマンドラインからfoo.pyを実行していますが、forループを持つ関数が含まれており、その中にIPython.embed()ステートメントを持つ関数があります。 これは、関数内のその時点でインタープリターを初期化して、それらのローカル変数にアクセスできるようにするためです。

ただし、組み込みインタープリターから脱出しようとすると、新しいインタープリターを開くだけで(おそらく、forループの場合は最大k回)、その端末を効果的にロックします。

ipdbqに類似したコマンドがあれば便利です。このコマンドはすぐに例外をスローし、 foo.pyが実行されたCLIに戻ります。

最も参考になるコメント

スクリプトの実行を完全に停止する単一のコマンドがあると便利です。 同等のもののように:

  1. %kill_embedded (そしてそうです、確かに)
  2. exit
  3. 「ctrl + c」(3回)

全てのコメント3件

%kill_embedded試してください-ループから抜け出すことはありませんが、スクリプトの残りの部分が完了するまで実行されるように、 embed() no-opsへの今後のすべての呼び出しを行う必要があります。

スクリプトの実行を完全に停止する単一のコマンドがあると便利です。 同等のもののように:

  1. %kill_embedded (そしてそうです、確かに)
  2. exit
  3. 「ctrl + c」(3回)

%exit_raiseは外部コンテキストに例外を発生させ、コードは終了します

このページは役に立ちましたか?
0 / 5 - 0 評価