'module' object has no attribute 'choice' - trying to use random.choice

半腔热情 提交于 2019-11-29 11:29:17

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!