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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With