回答:
Pythonのインタラクティブオプションを使用してみてください。
python -i program.py
これにより、program.pyのコードが実行され、REPLに移動します。program.pyのトップレベルで定義またはインポートしたものはすべて利用可能になります。
私はこれを頻繁に使用します:
def interact():
import code
code.InteractiveConsole(locals=globals()).interact()
pdb
、を使用できますinteract
。
これを行う方法を次に示します(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のキャデラックであるIPythonを使用する必要があります。見るhttp://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipythonを
ドキュメントから:
また、自動で計算が集中する部分を実行してから、データやプロットなどを確認する必要があることがよくある科学計算の状況でも役立ちます。IPythonインスタンスを開くと、データや関数に完全にアクセスできます。インタラクティブ部分が終了したら、プログラムの実行を再開できます(おそらく、後で必要なだけ何度でも停止できます)。
デバッガーを起動できます。
import pdb;pdb.set_trace()
REPLの目的がわからない場合でも、デバッガーは非常に似ています。
私は自分のスクリプトの1つでこれを実行しました(これは、計測する巨大なPITAである自動化フレームワーク内で実行されます)。
x = 0 # exit loop counter
while x == 0:
user_input = raw_input("Please enter a command, or press q to quit: ")
if user_input[0] == "q":
x = 1
else:
try:
print eval(user_input)
except:
print "I can't do that, Dave."
continue
ブレークポイントが必要な場所にこれを配置するだけで、Pythonインタープリターと同じ構文を使用して状態を確認できます(ただし、モジュールのインポートはできないようです)。あまりエレガントではありませんが、他の設定は必要ありません。