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) 一起显示的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow忽略警告信息:FutureWarning
为啥我得到这个错误结果=方法(y)FutureWarning:元素比较失败;而是返回标量