使用 调试 Python 脚本时ipdb my_script.py
,我想在调试会话 shell中使用 IPython 魔术函数%paste
,例如。是可能的以及如何?%cd
ipdb
问问题
4841 次
2 回答
22
根据ipdb Github repo魔术 IPython 功能不可用。幸运的是,IPython 调试器提供了一些关于如何在不启动单独的 IPython shell 的情况下获得此功能的线索。
这是我运行的操作%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
这样,您可以单步执行您的代码并通过方法访问所有 IPython 魔术函数find_line_magic(your_magic_function)
。
于 2015-01-15T20:29:14.470 回答
19
您可以在堆栈中打开 IPython shell,就像 pdb 一样。请执行下列操作:
- 从 IPython 导入 embed(),并将其放入您的代码中。
- 运行脚本
例子:
from IPython import embed
def some_func():
i = 0
embed()
return 0
在 Python 外壳中:
>>> te.func()
IPython 1.0.0 -- An enhanced Interactive Python.
(...)
In [1]: %whos
Variable Type Data/Info
i int 0
In [2]:
那是你要找的吗?
于 2013-09-15T01:47:53.410 回答