在ipython中遇到异常时停止Python程序的执行

2 投票
2 回答
1057 浏览
提问于 2025-04-17 15:15

我有一个运行很久的Python程序,在某个时刻会出现错误。有没有办法在ipython会话中运行这个程序,并在出现错误时暂停,这样我就可以查看当时的实时数据?

2 个回答

0

是的,这要看你是怎么设置的。你可以像使用其他模块一样导入你的程序,并在一个try except块里运行它。

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

如果你的程序不是在一个函数里,你可能需要把try块放在导入语句的周围。

这种方法的问题在于,你想查看的变量可能不再可用。通常我会在不同的地方使用打印语句或者日志信息,来找出哪里和我预期的不一样。

3

你可能想用 ipython -i yourscript.py 这个命令,它会在解释器环境中执行你的脚本。不过,这样做的话,你无法查看发生错误时的本地环境,比如函数内部的局部变量——你只能查看全局变量。你可能更想要的是这个:

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

如果你对使用 PDB 还不太熟悉,可以先看看 这份文档

感谢 Thomas K 的编辑

撰写回答