【问题标题】:Counter in Collections module Python集合模块 Python 中的计数器
【发布时间】:2012-10-29 22:49:47
【问题描述】:

我遇到了一个非常奇怪的问题。我正在尝试在集合模块中使用计数器功能。但是,我不断收到相同的错误消息

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 界面和脚本中进行了测试(不导入其他任何东西,只导入集合)。

有什么想法吗?

【问题讨论】:

  • 一般来说,在处理这种意外行为时,确保模块是您认为的模块通常是一个好主意。所以尝试 import collections;print(collections) 并确保它是标准库版本。当 python 路径被搞砸或库被添加到与标准库同名的 python 路径时,我已经看到了这种问题。
  • 确保您的文件名不应为“collections.py”,否则您将面临后果。

标签: collections counter python-import importerror python-2.6


【解决方案1】:

Counter 类已添加到 Python 2.7 的模块中。您很可能使用 Python 2.6 或更早版本。来自collections.Counter() documentation

2.7 版中的新功能。

在 python 2.5 或 2.6 上,请改用 this backport

【讨论】:

  • 我在 Python 3.0 中也面临同样的问题,'module' object has no attribute 'Counter':print(collections.Counter({'a':2, 'b':3, 'c':1}))
  • @KamalNayan 您需要 3.1 或更高版本。 3.0 真的很古老,我非常非常强烈地建议你不要使用它。 Python 3 系列在 3.4 和更新版本开始变得非常棒。例如,3.0 存在一些严重的性能问题。
  • 我是 python 的初学者,在不同的版本上手忙脚乱。我不知道那台 Windows PC(使用 py 3.0)有什么问题,它不工作,但我的其他 Windows 系统(在 2.7 和 3.6 上)也是如此。我将在我以前的 PC 上检查 py 3.6。
【解决方案2】:

您可能使用的是旧版本的 Python,Counter 类,如 documentation 中所述,是在 2.7 版中添加的。

【讨论】:

    【解决方案3】:

    安装pandas时遇到同样的问题。

    原因Counter 仅在 python2.7 及更高版本中受支持,并且在早期版本中不可用 - Counter 类已添加到 collections 包中的 Python 2.7 中。


    解决方案 1:如 Martin Pieters 所述 - 使用反向端口。

    /lib64/python2.6/ 处添加counter.py - 这是collections.py./lib64/python2.6/collections.py 的位置 修补 collections.py 与:

    from counter import Counter
    

    解决方案 2:使用 backport_collections 包。 下一个补丁(导入语句)你在我的情况下遇到异常的包,即 pandas:

    from backport_collections import Counter
    

    【讨论】:

      【解决方案4】:

      你应该使用新版本的python AS python 3。然后你就可以使用这个模块了。 然后导入,

      import collections
      from collections import counter
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        相关资源
        最近更新 更多