2014-02-27 40 views
4

我在Python中遇到了一个奇怪的警告问题。我正在使用一个包含很多模块的大型代码库,并且我无法创建一个能够重现此问题的小脚本,对不起,没有最小示例。每当出现警告时,程序将其视为错误并退出。这不是针对特定类型的警告,它似乎是所有的警告(至少RuntimeWarning,PendingDeprecationWarning和UserWarning)。我不能轻易阻止这些警告,它需要对其他人的工作进行大量修改,而且这些对代码的功能来说不是问题。将Python警告视为错误,无法禁用

这里有一些事情我都试过,没有工作:

命令行标志-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) 

如果任何人都可以帮我解释一下,这将很棒。

回答

0

你总是可以尝试分母阵列,使NaN的,像更换零:

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

这个工作对周围的一个实例得到,感谢您的想法,但不能解决整个问题。现在事情正在打破其他地方... – Lydia