Python警告被视为错误,无法禁用

时间:2014-02-27 20:13:45

标签: python numpy warnings

我在python中遇到一个奇怪的警告问题。我正在使用一个包含许多模块的大型代码库,我无法创建一个可以重现此问题的小脚本,抱歉没有最低限度的示例。只要有警告,程序就会将其视为错误并退出。这不适用于特定类型的警告,它似乎适用于所有警告(至少RuntimeWarning,PendingDeprecationWarning和UserWarning)。我不能轻易地阻止警告,它需要对其他人的工作进行大量修改,并且它们不是代码功能的问题。

以下是我尝试过的一些不起作用的事情:

命令行标志-W

选中以确保$ PYTHONWARNINGS未设置

已验证sys.warnoptions为空

前言脚本:

import warnings
warnings.filterwarnings("ignore")

我已经在使用日志记录,将日志记录设置更改为:

logging.basicConfig(level=logging.DEBUG)
logging.captureWarnings(True)

有没有真正的蟒蛇专家可以提供帮助?

编辑:

我遇到麻烦的罪魁祸首是零除以。正确的行为应该是返回NaN(稍后将转换为零)。出于速度原因,我必须使用numpy数组除法,将其分解为循环是不可行的。以下是我尝试过的两件事,其中arr2包含零:

np.seterr(divide='ignore')
z = np.divide(arr1,arr2)

with np.errstate(divide='ignore'):
    z = np.divide(arr1,arr2)

在这两种情况下,我仍然得到RuntimeWarning,然后程序退出。

再次编辑:

我找到了令人讨厌的代码行,但我不明白为什么会导致这个问题:

warnings.simplefilter("ignore",lineno=32)

如果有人能帮我解释一下,那就太好了。

1 个答案:

答案 0 :(得分:0)

你总是可以尝试用NaN替换分母数组中的零,例如:

denom[denom == 0.0] = np.NaN #watch out for float equality here
numer / denom