在ipython中停止异常执行Python程序

时间:2013-02-08 15:09:02

标签: python ipython

我有一个长期运行的Python程序,在某些时候会引发异常。有没有办法从ipython会话运行它并停止异常,所以我可以检查实时数据?

2 个答案:

答案 0 :(得分:3)

您可能需要ipython -i yourscript.py,它将在解释器环境中执行您的脚本。但这不会让你检查发生异常的本地环境,例如函数中的局部变量 - 你只能检查全局变量。你可能想要这个:

In [1]: %run test.py
<exception occurs>
In [2]: %debug test.py

如果您不熟悉使用PDB,请先查看some docs

感谢Thomas K

答案 1 :(得分:0)

是的,取决于您的设置方式。您可以导入程序并像try块中的任何其他模块一样运行它。

import yourprogram
try:
    yourprogram.main_function(args)
except:
    print "we blew up, investigate why"

如果您的程序不在函数中,则可能需要在导入周围放置try块。

这种方法的问题在于您想要查看的变量可能不再在范围内。我通常在各个点使用打印语句或日志消息来弄清楚看起来不像我期待的那样。