'模块'对象没有属性' choice' - 尝试使用random.choice

时间:2014-09-05 23:45:50

标签: python attributeerror

有人可以告诉我,我可能做错了什么。当我运行我的python代码时,我不断收到此消息:

import random

foo = ['a', 'b', 'c', 'd', 'e']

random_item = random.choice(foo)

print random_item

错误

  

AttributeError:'module'对象没有属性'choice'

5 个答案:

答案 0 :(得分:37)

在黑暗中拍摄:您可能将脚本命名为random.py。不要将脚本命名为与模块相同的名称。

我这样说是因为random模块确实有一个choice方法,所以导入可能会抓错(读取:不需要的)模块。

答案 1 :(得分:11)

对我来说问题是我用

random.choices 

在python 3.6本地开发中 但 服务器是python3.5没有这个方法...

答案 2 :(得分:6)

听起来像是一个导入问题。在名为random的同一目录中是否有另一个模块?如果是这样(如果你在python2上,这是print random_item显而易见的话)那么它就是导入它。尽量不要隐藏内置名称。

您可以使用以下代码对此进行测试:

import random

print random.__file__

stdlib中的实际random.py模块位于path/to/python/lib/random.py。如果你的是其他地方,这将告诉你它在哪里。

答案 3 :(得分:2)

简而言之,Python查找它发现的名为“random”的第一个文件,并且没有找到choice属性。

99.99%的时间,这意味着你已经在路径/目录中找到了一个已经命名为“随机”的文件。如果这是真的,重命名并重试。它应该工作。

答案 4 :(得分:2)

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.