Detectando quando um script python está sendo executado interativamente no ipython

Existe uma maneira de um script python detectar automaticamente se ele está sendo executado de forma interativa ou não? Alternativamente, pode-se detectar se o ipython está sendo usado versus o executável normal do python c?

Background: Meus scripts python geralmente têm uma chamada para exit () neles. De tempos em tempos, executo os scripts interativamente para depuração e criação de perfil, geralmente em ipython. Quando estou executando interativamente, quero suprimir as chamadas para sair.

Esclarecimento:

Suponha que eu tenha um script, myscript.py, que se pareça com:

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

Às vezes, quero executar o script em uma sessão do IPython que já iniciei, dizendo algo como:

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

No final do script, a chamada exit () fará com que o ipython seja interrompido enquanto pergunta se eu realmente quero sair. Esse é um aborrecimento menor durante a depuração (muito pequeno para eu me importar), mas pode atrapalhar os resultados de criação de perfil: o prompt de saída é incluído nos resultados do perfil (dificultando a análise se eu iniciar uma sessão de perfil antes de sair para almoçar) .

O que eu gostaria é algo que me permita modificar meu script para que pareça:

#!/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