誰かが私が間違っているかもしれないことを教えてもらえますか? pythonコードを実行すると、このメッセージが表示され続けます:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
エラー
AttributeError: 'module'オブジェクトには属性 'choice'がありません
暗闇で撮影:おそらくスクリプトにrandom.py
。スクリプトにモジュールと同じ名前を付けないでください。
random
モジュールには確かにchoice
メソッドがあるため、インポートはおそらく間違った(読み取り:望ましくない)モジュールを取得しているため、これを言います。
私にとって問題は私が使うことです
random.choices
python 3.6 local devですが、サーバーはpython3.5です。このメソッドはありません...
インポートの問題のように聞こえます。同じディレクトリにrandom
という名前の別のモジュールがありますか?その場合(そしてpython [2]を使用している場合、これはprint random_item
から明らかです)、代わりにそれをインポートしています。組み込みの名前をシャドウしないようにしてください。
これは次のコードでテストできます。
import random
print random.__file__
Stdlibの実際のrandom.py
モジュールはpath/to/python/lib/random.py
にあります。あなたがどこかにいる場合、これはそれがどこにあるかを教えてくれます。
要するに、Pythonは「ランダム」という名前の最初のファイルを探し、choice属性を見つけていません。
99.99%の確率で、パスまたはディレクトリにすでに「ランダム」という名前のファイルがあることを意味します。正しい場合は、名前を変更してもう一度お試しください。うまくいくはずです。
また、メソッドにrandom
という名前を付けて、このエラーが発生しました。
import random
def random():
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
random()
それはあなたのケースではありません(ファイルに名前を付けるrandom.py
)しかし、このエラーについて検索し、この間違いをする可能性がある他の人のために。