我的应用充满了来自第三个软件包的警告
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中的特定第三者警告。
答案 0 :(得分:1)
该警告告诉您,您正在从Python 3.3之前正确的位置获取一些资源,并且从Python 3.9开始完全无法使用。您使用的Python版本介于3.3和3.9之间,这意味着暂时仍然可以使用,但是您需要重构代码,以便从collections.abc
而非{{1}导入ABC }。除非按照错误提示的方式重构代码,否则您将无法使用3.9之前的Python版本,这将限制您的可能性,将不允许使用在这些版本之后实现的任何功能,并且由于以下原因,越来越多的库与您的项目不兼容:它们对于您的项目来说太现代了。
您可以通过将项目降级到3.3之前的Python版本来摆脱警告,但这是您应尽可能避免的方向。最好的解决方案是重构您的项目,使其符合现代Python版本的条款,如果您使用的软件包妨碍您这样做,则可能需要升级这些软件包。如果没有可以解决此问题的升级,那么就值得问您一个问题,以您自己的劳动而言,以更现代的方式来实现其功能是否需要较高的成本,还是在成本方面需要较高的成本?如果您受困于旧的Python版本,就会出现技术短缺。
答案 1 :(得分:0)
我从here找到了答案
解决方案:确保在导入第三包之前 之前运行以下代码
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
from collections import Sequence