C'è un modo per uno script Python per rilevare automaticamente se viene eseguito in modo interattivo o no? In alternativa, si può rilevare se viene utilizzato ipython rispetto al normale eseguibile di python?Rilevare quando uno script python viene eseguito in modo interattivo in ipython
Background: I miei script Python hanno generalmente una chiamata a exit() in essi. Di tanto in tanto, eseguo gli script in modo interattivo per il debug e il profiling, di solito in ipython. Quando sono in esecuzione in modo interattivo, voglio sopprimere le chiamate per uscire.
Chiarimento:
Supponiamo che io sono uno script, myscript.py, che assomiglia:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
A volte, voglio eseguire lo script all'interno di una sessione IPython che ho già iniziato , dicendo qualcosa del tipo:
In [nnn]: %run -p -D myscript.pstats myscript.py
alla fine dello script, la chiamata exit() causerà ipython bloccato mentre un sks me se voglio davvero uscire. Questo è un fastidio minore durante il debug (troppo piccolo per me per preoccuparmene), ma può rovinare i risultati del profilo: il prompt di uscita viene incluso nei risultati del profilo (rendendo l'analisi più difficile se avvio una sessione di profilazione prima di andare a pranzo) .
Quello che mi piacerebbe è una cosa che mi permetta modificare il mio script in modo che assomiglia a:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)
E la shell interattiva standard che hai con 'python'? – n611x007