【发布时间】:2014-03-31 12:30:32
【问题描述】:
我在 python 中遇到了一个奇怪的警告问题。我正在使用包含许多模块的大型代码库,我无法创建重现此问题的小脚本,抱歉没有最小示例。每当出现警告时,程序将其视为错误并退出。这不是针对特定类型的警告,它似乎针对所有警告(至少 RuntimeWarning、PendingDeprecationWarning 和 UserWarning)。我不能轻易地阻止这些警告,它需要对其他人的工作进行大量修改,而且它们对代码的功能来说不是问题。
以下是我尝试过的一些无效的方法:
命令行标志-W
检查以确保 $PYTHONWARNINGS 未被设置
验证 sys.warnoptions 为空
前言脚本:
import warnings
warnings.filterwarnings("ignore")
我已经在使用日志记录,将日志记录设置更改为:
logging.basicConfig(level=logging.DEBUG)
logging.captureWarnings(True)
有没有真正的 Python 大师可以提供帮助?
编辑:
我无法绕过的罪魁祸首是除以零。正确的行为应该是返回一个 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)
如果有人能帮我解释一下,那就太好了。
【问题讨论】: