有人可以告诉我,我可能做错了什么。当我运行我的python代码时,我不断收到此消息:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
错误
AttributeError:'module'对象没有属性'choice'
答案 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.