DeprecationWarning: Using or importing the ABCs from ‘collections‘ instead of from ‘collections.abc‘

语言: CN / TW / HK

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

如题,发现这个问题的时候,我正在使用python+requests+pytest测试接口,控制台输出的一项warning:

lib\site-packages\pyreadline\py3k_compat.py:8: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    return isinstance(x, collections.Callable)

翻译过来呢,就是pyreadline库下的py3k_compat.py模块第8行,抛出的一个废弃警告:要使用 from collections.abc import  代替 from collections import ,并且在py3.8版本停止使用,报错的代码是:return isinstance(x, collections.Callable)

知道了发生问题的前因后果,那么就要着手解决,第一反应,尼玛就是一顿百度,点这个点那个,挨个挨个的尝试,最大的问题不是没有解决问题,而是失去了思考并解决问题的能力。

百度的解决方案如下:from collections import Iterable   改为   from collections.abc import Iterable

警告提示,他一般并不影响执行的结果 ,可以不管他,但是强迫症不允许出现这样的信息,于是,就按照百度的操作,无效!!!

能再扯点吗?excuse me?

信息明明已经告诉你错在哪里哪行代码了,你找到它不就是完事了吗?

lib\site-packages\pyreadline\py3k_compat.py:8

第八行:

return isinstance(x, collections.Callable)

修改成:

return isinstance(x, collections.abc.Callable)

这样问题不是解决了吗?还有什么不明白了,我就不明白了,全篇百度就只会告诉你修改from  \*\*\* import\*\*\*\* 会翻译的还要你教?竟然同样的答案全网都是。

温馨提示:本文不是帮你解决问题,而是帮你拥有解决问题的能力。