问题
I\'ve come across a really weird problem. I\'m trying to use Counter function in collections module. However, I keep getting the same error message
AttributeError: \'module\' object has no attribute \'Counter\'
I have tried using it before and it worked fine, but now for some reason when I import \"collections\" module it has a very limited number of attributes.
I have tried:
import collections # when calling Counter I would then use collections.Counter()
import collections as collect # collect.Counter()
For both of those I keep getting Attribute Error.
I have also tried
from collections import Counter
And in this case I got:
ImportError: cannot import name Counter
These are all tested both in ipython interface and through a script (not importing anything else, just the collections).
Any ideas?
回答1:
The Counter
class was added to the module in Python 2.7. You are most likely using Python 2.6 or older. From the collections.Counter() documentation:
New in version 2.7.
On python 2.5 or 2.6, use this backport instead.
回答2:
Came across the same issue while installing pandas
.
Cause: Counter
is only supported in python2.7
and higher and is not available in earlier versions - Counter
class got added into collections
package in Python 2.7
.
Solution 1: As stated by Martin Pieters - use the backport.
Add counter.py at /lib64/python2.6/
- this is where the collections.py
is ./lib64/python2.6/collections.py
Patch collections.py
with:
from counter import Counter
Solution 2: use the backport_collections package. Next patch (the import statement) the package you're getting exception at i.e. pandas in my case:
from backport_collections import Counter
回答3:
You're probably using an old version of Python, the Counter
class, as stated in the documentation was added in version 2.7.
来源:https://stackoverflow.com/questions/13311094/counter-in-collections-module-python