是否可以将变量从pdb会话传递​​到原始交互式会话?

时间:2009-07-11 16:37:11

标签: python debugging ipython

我正在使用pdb检查在ipython会话中调用run -d的脚本。 能够绘制一些变量是有用的,但我需要它们在主ipython环境中才能做到这一点。

所以我要找的是在我退出pdb后在主交互式会话中使变量可用的某种方法。如果你在最顶层的框架中设置一个变量,它似乎确实存在于ipython会话中,但这对于任何进一步向下的框架都不起作用。

以下内容如export

ipdb> myvar = [1,2,3]
ipdb> p myvar
[1, 2, 3]
ipdb> export myvar
ipdb> q

In [66]: myvar
Out[66]: [1, 2, 3]

1 个答案:

答案 0 :(得分:2)

每个ipython的docs,以及来自ipython提示符的run?命令,

  

执行后,IPython   交互式名称空间       使用程序中定义的所有变量进行更新(__name__除外)       和sys.argv)

通过“在程序中定义”(稍微草率地使用术语),它并不意味着“在那里找到任何嵌套函数中的任何地方” - 它意味着“在脚本/模块的globals()中你是run ning。如果你在任何类型的嵌套中,globals()['myvar'] = [1,2,3]仍然可以正常工作,就像你希望的export一样,如果它存在的话。

修改:如果您使用的是其他模块,则需要在原始文件的全局内设置名称 - 如果需要,import sys之后{{1}会做你想做的事。

相关问题