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 Gegensatz zur normalen C-Python-Programmdatei verwendet wird?Erkennen, wenn ein Python-Skript interaktiv in Ipython ausgeführt wird
Hintergrund: Meine Python-Skripte haben in der Regel einen Aufruf von exit() in ihnen. Von Zeit zu Zeit starte ich die Skripte interaktiv zum Debuggen und Profiling, normalerweise in ipython. Wenn ich interaktiv laufe, möchte ich die Anrufe zum Beenden unterdrücken.
Klärung:
Angenommen, ich habe ein Skript, myscript.py, die wie folgt aussieht:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
Manchmal möchte ich das Skript innerhalb einer IPython Sitzung ausgeführt, die ich bereits begonnen haben, und sagte so etwas wie:
In [nnn]: %run -p -D myscript.pstats myscript.py
Am Ende des Skripts wird die exit() Aufruf verursacht ipython, während es hängen ein sks mich, wenn ich wirklich aussteigen will. Dies ist eine kleine Belästigung während des Debuggens (zu unbedeutend für mich), aber es kann zu Profiling-Ergebnissen führen: Die Exit-Eingabe wird in die Profilergebnisse aufgenommen (erschwert die Analyse, wenn ich vor dem Mittagessen eine Profiling-Sitzung starte) .
Was würde Ich mag ist etwas, das ich mein Skript ändern kann, so dass es wie folgt aussieht:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)
Was ist mit der Standard interaktiven Shell, die Sie mit 'Python' haben? – n611x007