如何知道Python中的警告来自何处

时间:2011-06-17 17:42:55

标签: python numpy warnings

是否可以显示行号和警告?我收到了一些警告,可能来自numpy,但我不知道它们来自哪里。我不希望我的代码上船或提出异常,但我想从警告的起源获得更多信息。有可能吗?

3 个答案:

答案 0 :(得分:1)

像这样写一个单独的模块。

import warnings

# capture all warnings
with warnings.catch_warnings(record=True) as warns:
    warnings.simplefilter("always")
    # do the stuff that triggers warnings.  i.e. import your main module
    # and call whatever is necessary to get it going.  This must all be
    # indented under the with statement!

# afterward, print captured warnings
for w in warns:
    print w.category.__name__, "(%s)" % w.message,
    print "in", w.filename, "at line", w.lineno

答案 1 :(得分:1)

默认打印通过warnings模块发出的警告,包括文件名和行号,输出可以由warnings模块中的函数以及{{{ 1}} Python解释器的参数。由于您的警告显然不包含文件名和行号,-W模块可能无法帮助您。由于您怀疑warnings可能是罪魁祸首,我建议您查看numpy.seterr()函数。将警告变成错误可能会有所帮助。

答案 2 :(得分:0)

编辑:

精氨酸!我莫名其妙地错了名字。

使用pychecker模块。如果安装了distutils,则只需在命令行上键入:easy_install pychecker即可获得最新版本。默认情况下会生成警告,并列出它们的行号。