FutureWarning 未与 warnings.simplefilter(action = "error", category=FutureWarning) 一起显示

Posted

技术标签:

【中文标题】FutureWarning 未与 warnings.simplefilter(action = "error", category=FutureWarning) 一起显示【英文标题】:FutureWarning not displayed with warnings.simplefilter(action = "error", category=FutureWarning) 【发布时间】:2021-03-19 07:25:53 【问题描述】:

我无法找到产生 FutureWarning 消息的代码行:元素比较失败。

SO 中还有其他问题描述了导致此警告的 python / numpy 冲突。 我正在尝试在我的代码中查找导致此问题的行。

当我在代码的标题部分中包含这些行时:

import warnings
warnings.simplefilter(action = "default", category=FutureWarning)

然后警告消息显示在控制台输出上,但没有确定问题发生位置的信息。

当我包含这些行时:

import warnings
warnings.simplefilter(action = "error", category=FutureWarning)

则不显示警告信息。

我也用过

warnings.filterwarnings()

与 simplefilter 具有相同的参数,并具有相同的结果。

我正在尝试运行代码并生成一个用于标识违规行的回溯。

我做错了什么?

【问题讨论】:

您能分享您的代码或它的最低版本以进行调试吗?另外,您从哪里运行代码、IDE 或提示符? 对我来说,warnings.simplefilter(action = "error", category=FutureWarning) 按预期工作...确保删除“默认”上的简单过滤器并尝试使用warnings.filterwarnings("always") 以确保它不是与事实相关的问题不是遇到的第一个警告。 【参考方案1】:

尝试删除您的警告/过滤警告并添加以下内容:

numpy.seterr(all='raise')

如果符合预期,它将在发生的地方引发异常。

更多信息:

FutureWarning: elementwise comparison failed; returning scalar, but in the future will perform elementwise comparison

https://github.com/numpy/numpy/issues/6784

【讨论】:

【参考方案2】:

通常,从 cmd 或终端运行代码有助于指示警告/错误,如提示中显示的哪一行代码产生了消息。否则,使用 Ctrl + b 从 Sublime Text 构建代码也有助于指出错误所在。

现在,如果这仍然对您不起作用,手动执行此操作的方法是查找代码中您使用 ==in 的每个部分。这两个运算符,以及here 的解释,都可能导致这种错误。然后你可以在一些命令之前使用with warnings.catch_warnings():,看看你是否找到它。

然后,如果你发现它并且想忽略它,那就去做

with warnings.catch_warnings():
    warnings.simplefilter("ignore", category= FutureWarning)
    <<command>>

【讨论】:

以上是关于FutureWarning 未与 warnings.simplefilter(action = "error", category=FutureWarning) 一起显示的主要内容,如果未能解决你的问题,请参考以下文章

numpy:FutureWarning:元素比较失败

FutureWarning

TensorFlow忽略警告信息:FutureWarning

为啥我得到这个错误结果=方法(y)FutureWarning:元素比较失败;而是返回标量

Python loc + isin 返回 FutureWarning(元素比较失败)

来自 signaltools.py 的 FutureWarning