When debugging Python script using ipdb my_script.py
, I want to use IPython magic functions like %paste
, %cd
in ipdb
debug se
You can open a IPython shell inside a stack, just like pdb does. Do the following:
Example:
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]:
Was that what you were looking for?
According to the ipdb Github repo magic IPython functions are not available. Fortunately, the IPython debugger provides a couple of clues of how to get this functionality without launching a separate IPython shell.
Here is what I did to run %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
This way, you can step through your code and have access to all the IPython magic functions via the method find_line_magic(your_magic_function)
.