¿Hay alguna manera de que una secuencia de comandos python detecte automáticamente si se está ejecutando interactivamente o no? Alternativamente, ¿se puede detectar si se está utilizando ipython en comparación con el ejecutable c python regular?Detectando cuando una secuencia de comandos python se ejecuta de forma interactiva en ipython
Antecedentes: Mis scripts de python generalmente tienen una llamada para salir() en ellos. De vez en cuando, ejecuto las secuencias de comandos de forma interactiva para la depuración y el perfil, por lo general en ipython. Cuando estoy ejecutando interactivamente, quiero suprimir las llamadas para salir.
Aclaración:
Supongamos que tengo un guión, myscript.py, que se parece a:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
A veces, quiero ejecutar el script en una sesión 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 salida() llamada causará ipython para colgar mientras que una Me pregunta si realmente quiero salir. Esta es una pequeña molestia durante la depuración (demasiado pequeña para que me importe), pero puede arruinar los resultados de los perfiles: el mensaje de salida se incluye en los resultados del perfil (dificultando 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 permite modificar mi script de lo que parece:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)
¿qué pasa con el shell interactivo estándar que tienes con 'python'? – n611x007