26

使用 调试 Python 脚本时ipdb my_script.py,我想在调试会话 shell中使用 IPython 魔术函数%paste,例如。是可能的以及如何?%cdipdb

4

2 回答 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 回答