2011-03-21 6 views
23

Para facilitar la depuración de IPython, incluyo lo siguiente en el comienzo de mis guiones¿Cómo puedo hacer una prueba "si se ejecuta desde ipython" en Python?

from IPython.Debugger import Tracer 
debug = Tracer() 

Sin embargo, si pongo en marcha mi script desde la línea de comandos con

$ python myscript.py 

me sale un error relacionado con Ipython. ¿Hay una manera de hacer lo siguiente

if run_from_ipython(): 
    from IPython.Debugger import Tracer 
    debug = Tracer() 

De esta manera sólo importar la función trazador() cuando lo necesite.

Respuesta

38

Este es probablemente el tipo de cosas que busca:

def run_from_ipython(): 
    try: 
     __IPYTHON__ 
     return True 
    except NameError: 
     return False 
+3

más detallada de detección de configuración IPython (si pylab está cargado y en modo en línea) se trata aquí: http://stackoverflow.com/questions/15341757/how-to-check-that-pylab-backend-of-matplotlib-runs-inline/17826459#17826459 –

10

La forma de Python es usar excepciones. Al igual que:

try: 
    from IPython.Debugger import Tracer 
    debug = Tracer() 
except ImportError: 
    pass # or set "debug" to something else or whatever 
+2

+1 es más común en Python para probar cosas en lugar de probar cosas –

Cuestiones relacionadas