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

AMH*_*MHD 17 python attributeerror

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

import random

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

random_item = random.choice(foo)

print random_item
Run Code Online (Sandbox Code Playgroud)

错误

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

Cor*_*mer 45

在黑暗中拍摄:你可能已经命名了你的剧本random.py.不要将脚本命名为与模块相同的名称.

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

  • 如果这不能解决它,请检查 random.pyc 文件。 (2认同)
  • 它可能是在黑暗中拍摄,但它仍然是在黑暗中令人印象深刻的拍摄。+1(另外,为了记录,名称为`math.py` 会导致同样的问题) (2认同)

tya*_*yan 11

对我来说问题是我用的

random.choices 
Run Code Online (Sandbox Code Playgroud)

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

  • 使用“ random.sample” (2认同)
  • 当我的生产服务器使用 python3.5 时,“random.sample”对我有用。无需更改代码。只需添加它即可。当然,请在执行此操作之前测试您的代码。 (2认同)

Ada*_*ith 6

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

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

import random

print random.__file__
Run Code Online (Sandbox Code Playgroud)

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