2013-03-01 20 views
5

Ci sono alcuni argomenti su questo, ma nessuno con una risposta soddisfacente.Come incorporare un interprete IPython in un'applicazione in esecuzione in una console Qt IPython

Ho un'applicazione in esecuzione in un pitone IPython console qt

http://ipython.org/ipython-doc/dev/interactive/qtconsole.html

Quando incontro un errore, mi piacerebbe essere in grado di interagire con il codice in quel punto.

try: 
     raise Exception() 
    except Exception as e: 
     try: # use exception trick to pick up the current frame 
      raise None 
     except: 
      frame = sys.exc_info()[2].tb_frame.f_back 
     namespace = frame.f_globals.copy() 
     namespace.update(frame.f_locals) 
     import IPython 
     IPython.embed_kernel(local_ns=namespace) 

Vorrei pensare che questo avrebbe funzionato, ma ottengo un errore:

RuntimeError: le discussioni può essere avviato solo una volta

risposta

4

È possibile seguire the following recipe per incorporare una sessione IPython nel vostro programma:

Quindi utilizzare ipshell() ogni volta che si desidera rilasciare in una shell IPython. Questo ti permetterà di incorporare (e persino annidare) interpreti IPython nel tuo codice e ispezionare oggetti o lo stato del programma.

23

mi basta usare questo:

from IPython import embed; embed() 

funziona meglio di qualsiasi altra cosa per me :)

+0

Mi piace usare questo per esplorare nuovi progetti. Ho creato un bit.ly URL j.mp/ipshell che posso inserire nel mio codice. Punta a https://gist.github.com/RichardBronosky/570492 –