Pythonスクリプトがインタラクティブに実行されているかどうかを自動的に検出する方法はありますか? または、通常の c python 実行可能ファイルに対して ipython が使用されているかどうかを検出できますか?
背景: 私の python スクリプトには通常、exit() の呼び出しが含まれています。ときどき、スクリプトを対話的に実行してデバッグとプロファイリングを行います。通常は ipython を使用します。インタラクティブに実行しているときは、終了の呼び出しを抑制したいと考えています。
明確化:
次のようなスクリプト myscript.py があるとします。
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
場合によっては、既に開始している IPython セッション内で次のようにスクリプトを実行したいことがあります。
In [nnn]: %run -p -D myscript.pstats myscript.py
スクリプトの最後で、exit() 呼び出しによって ipython がハングアップし、本当に終了するかどうか尋ねられます。これはデバッグ中の小さな煩わしさです (私には気にならないほど些細なことです) が、プロファイリングの結果を台無しにする可能性があります: 終了プロンプトがプロファイルの結果に含まれます (ランチに出かける前にプロファイリング セッションを開始すると、分析が難しくなります) .
私が欲しいのは、スクリプトを次のように変更できるものです。
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)