2013-04-24 15 views

risposta

12

In base alle funzioni magiche IPython ipdb Github repo non disponibili. Fortunatamente, lo IPython debugger fornisce un paio di indizi su come ottenere questa funzionalità senza avviare una shell IPython separata.

Ecco che cosa ho fatto di correre %cpaste:

ipdb> from IPython import get_ipython 
ipdb> shell = get_ipython() 
ipdb> shell.find_line_magic('cpaste')() 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:for i in range(0,5): 
:  print i 
:-- 
0 
1 
2 
3 
4 

In questo modo, è possibile scorrere il codice e avere accesso a tutte le funzioni magiche ipython tramite il metodo find_line_magic(your_magic_function).

+0

Puoi passare il contesto (ad esempio le variabili locali) di ipdb a 'cpaste'? –

9

È possibile aprire una shell IPython all'interno di uno stack, proprio come fa pdb. Effettuare quanto segue:

  • Importa embed() da IPython e inseriscilo nel codice.
  • eseguire lo script

Esempio:

from IPython import embed 

def some_func(): 
    i = 0 
    embed() 
    return 0 

In Python shell:

>>> te.func() 

IPython 1.0.0 -- An enhanced Interactive Python. 
(...) 

In [1]: %whos 

Variable Type Data/Info 
i   int  0 

In [2]: 

era quello che stavi cercando?

+1

Mi piacerebbe utilizzare le funzioni magiche senza importare alcuna funzione IPython nel mio codice. – fossilet

+0

perché? è solo una questione di comodità personale? – gg349

+1

@flebool, sarebbe abbastanza comodo accedere alle funzioni magiche ovunque e ogni volta che il programma viene arrestato (sospeso) dal debugger senza dover programmare i breakpoint nel mio programma. – fossilet

Problemi correlati