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

℡╲_俬逩灬. 提交于 2019-11-30 08:30:00

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.

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

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.

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.

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.

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