Detectar cuándo un script de python se ejecuta interactivamente en ipython

¿Hay alguna forma de que un script de Python detecte automáticamente si se está ejecutando de forma interactiva o no? Alternativamente, ¿se puede detectar si se está usando ipython en comparación con el ejecutable regular de python?

Antecedentes: Mis scripts de python generalmente tienen una llamada a exit () en ellos. De vez en cuando, ejecuto los scripts de forma interactiva para la depuración y la creación de perfiles, generalmente en ipython. Cuando estoy corriendo de forma interactiva, quiero suprimir las llamadas para salir.

Aclaración:

Supongamos que tengo un script, myscript.py, que se parece a:

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

A veces, quiero ejecutar el script dentro de una sesión de IPython que ya he comenzado, diciendo algo como:

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

Al final de la secuencia de comandos, la llamada exit () hará que ipython se bloquee mientras me pregunta si realmente quiero salir. Esta es una molestia menor durante la depuración (demasiado pequeña para mi atención), pero puede estropear los resultados de creación de perfiles: el indicador de salida se incluye en los resultados del perfil (lo que dificulta el análisis si comienzo una sesión de creación de perfiles antes de ir a almorzar) .

Lo que me gustaría es algo que me permita modificar mi script para que se vea como:

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta