我的应用程序充斥着来自第三个包的警告。
transformers/modeling_deberta.py:18: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
from collections import Sequence我怎样才能压制这些警告呢?
我试过:
export PYTHONWARNINGS="ignore::DeprecationWarning"
warnings.filterwarnings(action="ignore")
warnings.filterwarnings(action="ignore", category=DeprecationWarning)
warnings.filterwarnings(action="ignore", category=DeprecationWarning, module=r".*transformers.*")
warnings.filterwarnings(action="ignore", category=DeprecationWarning, module=r".*collections.*")
warnings.filterwarnings(action="ignore", message=r".*collections.abc.*")更新以下选项不可行:
也许我应该等第三个包升级。只是想知道是否还有其他选项可以在python中禁止特定的第三方警告。
发布于 2020-11-13 12:31:29
我从here那里找到了答案
解决方案:确保以下代码在第三个包导入之前运行。如果使用多处理,则必须在(每个进程)中调用代码。
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
from collections import Sequence发布于 2020-11-10 11:47:12
警告告诉您,您正在从Python3.3之前正确的位置获得一些资源,并且从Python3.9开始将根本无法工作。您使用的Python版本介于3.3到3.9之间,这意味着这暂时仍然适用于您,但是您需要重构代码,以便从collections.abc而不是从collections导入ABC。除非您按照错误建议的方式重构代码,否则您将在3.9之前使用Python版本,这将限制您的可能性,将不允许使用在这些版本之后实现的任何好东西,并且会越来越多地看到库与您的项目不兼容,因为它们对您的项目来说太现代了。
您可以通过在3.3之前将项目降级为Python版本来消除警告,但如果可能的话,这是您应该努力避免的一个方向。最好的解决方案是重构您的项目以符合现代Python版本的条件,如果您使用阻止您这样做的包,那么您可能希望升级这些包。如果没有可以解决这个问题的升级,那么很值得问您的问题是,以更现代的方式实现他们的功能是否需要更高的人力成本,或者如果您继续使用旧的Python版本,那么技术短缺的成本会更高吗?
https://stackoverflow.com/questions/64767199
复制相似问题