如何摆脱第三代收藏。abc弃用警告

2024-06-08 05:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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 3.3

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


Tags: from应用程序警告选项actioncollectionsmoduleignore
2条回答

警告告诉您,您正在从一个在Python 3.3之前是正确的位置获取一些资源,并且从Python 3.9开始根本无法工作。您使用的是介于3.3和3.9之间的Python版本,这意味着这在目前仍然适用,但是您需要重构代码,以便从collections.abc而不是从collections导入ABC。除非您按照错误提示的方式重构代码,否则您将使用3.9之前的Python版本,这限制了您的可能性,将不允许使用这些版本之后实现的任何好东西,并且将越来越多地看到库与您的项目不兼容,因为它们对于您的项目来说过于现代

您可以通过将项目降级到3.3之前的Python版本来消除警告,但如果可能的话,这是您应该努力避免的方向。最好的解决方案是重构您的项目以符合现代Python版本的条款,如果您使用的软件包阻止您这样做,那么您可能需要升级这些软件包。如果没有升级可以解决这个问题,那么就很值得问一个问题:从劳动力角度来看,以更现代的方式实现其功能的成本是否更高,或者如果使用旧的Python版本,从技术短缺角度来看,成本是否更高

我从here找到了我的答案

解决方案:确保在导入第三个包之前运行以下代码

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    from collections import Sequence

相关问题 更多 >

    热门问题