【问题标题】:How can I assign to the ipython global namespace from within ipdb?如何从 ipdb 中分配给 ipython 全局命名空间?
【发布时间】:2015-04-15 21:13:09
【问题描述】:

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

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

【问题讨论】:

    标签: python ipython ipython-notebook pdb ipdb


    【解决方案1】:

    一种方法是将值分配给 module-member(类似于模块范围内的全局变量),在您退出 pdb 会话后仍然存在,因为模块已经在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
    

    【讨论】:

    • 啊!我可以使用sys.modules['__main__'].foo = 1 分配给 ipython 全局命名空间。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2012-05-03
    • 2013-11-22
    相关资源
    最近更新 更多