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?
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.
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
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