Erkennen, wann ein Python-Skript interaktiv in ipython ausgeführt wird

Gibt es eine Möglichkeit für ein Python-Skript, automatisch zu erkennen, ob es interaktiv ausgeführt wird oder nicht? Kann man alternativ feststellen, ob ipython im Vergleich zur regulären C-Python-Programmdatei verwendet wird?

Hintergrund: Meine Python-Skripte enthalten im Allgemeinen einen Aufruf zum Beenden (). Von Zeit zu Zeit führe ich die Skripte zum Debuggen und Profilieren interaktiv aus, normalerweise in ipython. Wenn ich interaktiv laufe, möchte ich die Anrufe zum Beenden unterdrücken.

Klärung:

Angenommen, ich habe ein Skript namens myscript.py, das wie folgt aussieht:

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

Manchmal möchte ich das Skript in einer IPython-Sitzung ausführen, die ich bereits gestartet habe.

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

Am Ende des Skripts führt der Aufruf von exit () dazu, dass ipython hängt, während ich gefragt werde, ob ich das Skript wirklich beenden möchte. Dies ist ein kleiner Ärger beim Debuggen (zu klein für mich, um es zu kümmern), kann jedoch die Profilerstellungsergebnisse durcheinander bringen: Die Beendigungsaufforderung wird in die Profilerstellungsergebnisse einbezogen (was die Analyse erschwert, wenn ich eine Profilerstellungssitzung vor dem Mittagessen beginne). .

Ich möchte etwas, mit dem ich mein Skript so ändern kann, dass es so aussieht:

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage