スクリプトがコマンドラインから起動された場合でも、Python スクリプトを実行中の任意の時点でプログラムで強制的に REPL にドロップする方法はありますか?
標準入力またはファイルからデータを読み取り、プロットし、REPL にドロップして、プロットをカスタマイズできるようにする、迅速で汚いプロット プログラムを作成しています。
スクリプトがコマンドラインから起動された場合でも、Python スクリプトを実行中の任意の時点でプログラムで強制的に REPL にドロップする方法はありますか?
標準入力またはファイルからデータを読み取り、プロットし、REPL にドロップして、プロットをカスタマイズできるようにする、迅速で汚いプロット プログラムを作成しています。
私はこれを頻繁に使用します:
def interact():
import code
code.InteractiveConsole(locals=globals()).interact()
Python のインタラクティブ オプションを使用してみることができます。
python -i program.py
これにより、program.py のコードが実行され、REPL に移動します。program.py の最上位レベルで定義またはインポートしたものはすべて使用可能になります。
これを行う方法は次のとおりです(IPython> v0.11):
import IPython
IPython.embed()
IPython <= v0.11 の場合:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell() # this call anywhere in your program will start IPython
Python REPL の Cadillac である IPython を使用する必要があります。http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipythonを参照してください
ドキュメントから:
また、自動化された計算集約的な部分を実行してから、データやプロットなどを見るために停止することが一般的な科学計算の状況でも役立ちます。IPython インスタンスを開くと、データと関数に完全にアクセスできます。インタラクティブな部分が完了したら、プログラムの実行を再開できます (おそらく、必要に応じて何度でも停止できます)。
デバッガーを起動できます。
import pdb;pdb.set_trace()
REPL の目的は不明ですが、デバッガーは非常に似ています。