我正在使用Windows子系统(用于Linux(特别是Windows的Ubuntu))运行一些python代码。当我尝试运行以下命令:“ import collections.abc”时,出现以下错误:“ ImportError:没有名为abc的模块”。
我可以导入'collections',但是如果尝试:'collections.abc',则会出现以下错误:'AttributeError:'module'对象没有属性'abc'。
此外,我尝试在不使用Windows版Ubuntu的情况下在命令提示符下导入模块,并且导入成功。
默认情况下,“集合”模块应包含在python中,因此我不确定为什么会出现此错误。
答案 0 :(得分:0)
来自Python 3 documentation for the collections
module:
在版本3.3中已更改: Collections Abstract Base Classes 到
collections.abc
模块。为了向后兼容,它们仍然可见 通过Python 3.7在此模块中。 随后,它们将被完全删除。
因此collections.abc
中任何已经存在的内容
在collections
中找到了Python <= 3.2,包括Python 2,
直接。
要支持所有版本的Python,请使用try / except块:
try: # works in Python >= 3.3
import collections.abc as collections_abc
except ImportError: # Python <= 3.2 including Python 2
import collections as collections_abc
然后使用例如collections_abc.Sequence
代替
collections.abc.Sequence
在Python> = 3.3和
collections.Sequence
在Python <= 3.2。
在this other answer中查看更长的讨论。