Python 从警告中回溯

Python 从警告中回溯,python,warnings,traceback,Python,Warnings,Traceback,我有一个代码,在某个时刻显示了一个警告,我认为它在计算mean() 我想知道是否有任何方法可以强迫python告诉我在哪里、哪一行或其他信息,而不仅仅是这条消息: C:\Python27\lib\site-packages\numpy\core\_methods.py:55: RuntimeWarning: Mean of empty slice. warnings.warn("Mean of empty slice.", RuntimeWarning) C:\Python27\lib\si

我有一个代码,在某个时刻显示了一个警告,我认为它在计算
mean()

我想知道是否有任何方法可以强迫python告诉我在哪里、哪一行或其他信息,而不仅仅是这条消息:

C:\Python27\lib\site-packages\numpy\core\_methods.py:55: RuntimeWarning: Mean of empty slice.
  warnings.warn("Mean of empty slice.", RuntimeWarning)
C:\Python27\lib\site-packages\numpy\core\_methods.py:79: RuntimeWarning: Degrees of freedom <= 0 for slice
  warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning)

您可以将警告转换为异常:

import warnings

warnings.simplefilter("error")
现在不打印警告,而是引发异常,为您提供回溯

您可以通过以下方法获得相同的效果:

或通过设置:


您可以和其他人一起玩,以更具体地说明什么警告应该引发异常。您可以过滤
警告。例如,RuntimeWarning
和行号。

前两个选项的优点和缺点是什么?第三个似乎更重要extreme@MikePalmice:所有3个选项都具有完全相同的效果,它们只是向Python二进制文件发送信号以更改过滤器设置的不同方式。
import warnings

warnings.simplefilter("error")
$ python -W error somescript.py
$ export PYTHONWARNINGS=error