问题
Could someone please tell me what I may be doing wrong. I keep getting this message when I run my python code:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
Error
AttributeError: 'module' object has no attribute 'choice'
回答1:
Shot in the dark: You probably named your script random.py
. Do not name your script the same name as the module.
I say this because the random
module indeed has a choice
method, so the import is probably grabbing the wrong (read: undesired) module.
回答2:
for me the problem is I use
random.choices
in python 3.6 local dev but the server is python3.5 don't have this method...
回答3:
Sounds like an import issue. Is there another module in the same directory named random
? If so (and if you're on python2, which is obvious from print random_item
) then it's importing that instead. Try not to shadow built-in names.
You can test this with the following code:
import random
print random.__file__
The actual random.py
module from stdlib lives in path/to/python/lib/random.py
. If yours is somewhere else, this will tell you where it is.
回答4:
In short, Python's looking in the first file it finds named "random", and isn't finding the choice attribute.
99.99% of the time, that means you've got a file in the path/directory that's already named "random". If that's true, rename it and try again. It should work.
回答5:
I also got this error by naming a method random
like this:
import random
def random():
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
random()
It's not your case (naming a file random.py
) but for others that search about this error and may make this mistake.
来源:https://stackoverflow.com/questions/25695412/module-object-has-no-attribute-choice-trying-to-use-random-choice