Python 2.7 如何在Python中找出警告的原因?

Python 2.7 如何在Python中找出警告的原因?,python-2.7,debugging,pdb,Python 2.7,Debugging,Pdb,当它在我的程序中运行scipy.stats.stats.pearsonr()时,我遇到了以下警告 /usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:2471: RuntimeWarning: invalid value encountered in double_scalars 我想知道如何通过使用打印输出或使用pdb之类的调试器来找出警告的原因(我对pdb有所了解,但我不知道如何使用pdb来找出警告的原因) 下面是我使用p

当它在我的程序中运行
scipy.stats.stats.pearsonr()
时,我遇到了以下警告

/usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:2471: RuntimeWarning: invalid value encountered in double_scalars
我想知道如何通过使用打印输出或使用pdb之类的调试器来找出警告的原因(我对pdb有所了解,但我不知道如何使用pdb来找出警告的原因)

下面是我使用
pearsonr()
的程序行:

替换为将出现异常的函数。

根据,您可以更改默认警告行为以引发异常,这当然会使跟踪和调试更容易

import warnings
# Cause all warnings to raise exceptions:
warnings.simplefilter("error")  # change the hook
# Trigger a warning:
corr = pearsonr(t1, t2)  # this will now raise

谢谢(1) 我没有使用
警告。showwarning
。您将如何使用打印堆栈跟踪的函数?(2) 我在一个循环中使用
corr=pearsonr(t1,t2)
,我的帖子中引用的警告只在某个迭代中出现。当警告发生时,我如何捕捉迭代?打印堆栈跟踪的每一帧。
corr=pearsonr(t1,t2)
在一个循环中,我的帖子中引用的警告只在某个迭代中发生。当警告发生时,我如何捕捉迭代?还是说每次迭代都要打印堆栈跟踪的每一帧?
import warnings
# Cause all warnings to raise exceptions:
warnings.simplefilter("error")  # change the hook
# Trigger a warning:
corr = pearsonr(t1, t2)  # this will now raise