我遇到了一个非常奇怪的问题。我正在尝试在集合模块中使用计数器函数。但是,我不断收到相同的错误消息
AttributeError: 'module' object has no attribute 'Counter'
我之前尝试过使用它,效果很好,但现在由于某种原因,当我导入“集合”模块时,它的属性数量非常有限。
我已经尝试过:
import collections # when calling Counter I would then use collections.Counter()
import collections as collect # collect.Counter()
对于这两个我不断收到属性错误。
我也尝试过
from collections import Counter
在这种情况下我得到:
ImportError: cannot import name Counter
这些都在 ipython 界面和脚本中进行了测试(不导入任何其他内容,仅导入集合)。
有什么想法吗?
Counter
类已添加到Python 2.7中的模块中。您很可能使用 Python 2.6 或更早版本。来自 collections.Counter()
文档:
2.7版本新增功能。
在 python 2.5 或 2.6 上,请使用 this backport 代替。
安装时遇到同样的问题
pandas
。
原因:
Counter
仅在python2.7
及更高版本中受支持,并且在早期版本中不可用 - Counter
类已添加到collections
中的Python 2.7
包中。
解决方案 1:如 Martin Pieters 所述 - 使用向后移植。
添加
/lib64/python2.6/
- 这是 collections.py
的位置 ./lib64/python2.6/collections.py
补丁collections.py
:
from counter import Counter
backport_collections
包。
下一个补丁(导入语句)是您遇到异常的包,即我的情况下的 pandas:
from backport_collections import Counter
以防其他人遇到同样的问题 - 检查您是否没有将您正在处理的文件命名为“collections.py”。在某些 IDE(包括 PyCharm)中,如果您尝试将集合模块导入到名为 collections.py 的文件中,它将无法工作。
您的文件将尝试将自身导入自身,因此集合(包括计数器)的内容将不会被导入。
您可以通过将当前文件重命名为 collections.py 以外的任何文件来解决此问题。
您应该使用新版本的python AS python 3。然后您可以使用该模块。 然后导入,
import collections
from collections import Counter