在使用
ipdb my_script.py
调试Python脚本时,我想在ipdb
调试会话Shell中使用IPython魔术函数,例如%paste
、%cd
。这是否可行以及如何实现?%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
通过使用方法find_line_magic(your_magic_function)
,您可以逐步执行代码并访问所有IPython魔术函数。
你可以像pdb一样,在栈内打开IPython shell。请按照以下步骤:
例如:
from IPython import embed
def some_func():
i = 0
embed()
return 0
>>> te.func()
IPython 1.0.0 -- An enhanced Interactive Python.
(...)
In [1]: %whos
Variable Type Data/Info
i int 0
In [2]:
这是您在寻找的内容吗?
ipython
shell而不是ipdb
shell使用魔术函数的方式,但遗憾的是这种方法并不能在ipdb
shell中使用。 - Manav Katariafrom IPython import embed; embed(); import ipdb; ipdb.set_trace()
,然后您就可以在代码中使用IPython的所有魔术函数了。 - Alan Dongipdb
以便执行该操作。 - alpha_989