首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何摆脱第三代collections.abc DeprecationWarning

如何摆脱第三代collections.abc DeprecationWarning
EN

Stack Overflow用户
提问于 2020-11-10 10:33:27
回答 2查看 3K关注 0票数 0

我的应用程序充斥着来自第三个包的警告。

代码语言:javascript
运行
复制
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

我怎样才能压制这些警告呢?

我试过:

代码语言:javascript
运行
复制
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.*")

更新以下选项不可行:

  • 删除生成这些警告的第三个包。是irreplaceable.
  • Downgrade to python3.3

也许我应该等第三个包升级。只是想知道是否还有其他选项可以在python中禁止特定的第三方警告。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-13 12:31:29

我从here那里找到了答案

解决方案:确保以下代码在第三个包导入之前运行。如果使用多处理,则必须在(每个进程)中调用代码。

代码语言:javascript
运行
复制
with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    from collections import Sequence
票数 0
EN

Stack Overflow用户

发布于 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版本,那么技术短缺的成本会更高吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64767199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档