如何从 ipdb 中分配给 ipython 全局命名空间?

How can I assign to the ipython global namespace from within ipdb?

我在使用 %debug 魔法调试的 IPython 笔记本中有一个回溯。我想将回溯框架中的一个对象分配给 IPython 全局命名空间中的一个变量,这样我就可以在 ipdb 提示符(相当笨拙)之外处理它。最简单的方法是什么?

我现在通过在 ipdb 中 pickle 对象并将其从全局命名空间中取消 pickle 来解决这个问题,但我确信有更好的方法。

一种方法是将值分配给 module-member(类似于模块范围内的全局变量),它在您退出 pdb 后仍然存在session,因为该模块已经在 sys.modules 中,并留在那里。

1% os.path.exists(3254)
...
TypeError: coercing to Unicode: need string or buffer, int found

2% %debug
...
ipdb> os.MYVAR = 234
ipdb> q

3% os.MYVAR
3= 234