Wykrywanie, gdy skrypt Pythona jest uruchamiany interaktywnie w ipythonie

Czy istnieje sposób na automatyczne wykrycie przez skrypt Pythona, czy jest on uruchamiany interaktywnie, czy nie? Alternatywnie, czy można wykryć, czy ipython jest używany zamiast zwykłego pliku wykonywalnego c python?

Tło: Moje skrypty Pythona zazwyczaj mają wywołanie exit () w nich. Od czasu do czasu uruchamiam skrypty interaktywnie w celu debugowania i profilowania, zwykle w ipythonie. Kiedy działam interaktywnie, chcę zablokować połączenia, aby wyjść.

Wyjaśnienie:

Załóżmy, że mam skrypt myscript.py, który wygląda tak:

#!/usr/bin/python
...do useful stuff...
exit(exit_status)

Czasami chcę uruchomić skrypt w sesji IPython, który już uruchomiłem, mówiąc:

In [nnn]: %run -p -D myscript.pstats myscript.py

Na końcu skryptu wywołanie exit () spowoduje, że ipython zawiesi się, gdy zapyta mnie, czy naprawdę chcę wyjść. Jest to drobna irytacja podczas debugowania (zbyt mała, by mnie to obchodziło), ale może zepsuć wyniki profilowania: monit wyjścia zostanie włączony do wyników profilu (utrudniając analizę, jeśli rozpocznę sesję profilowania przed wyjściem na lunch) .

To, co chciałbym, to coś, co pozwoli mi zmodyfikować mój skrypt, aby wyglądał tak:

#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
    print "The exit_status was %d" % (exit_status,)
else:
    exit(exit_status)

questionAnswers(3)

yourAnswerToTheQuestion