Quelqu'un pourrait-il me dire ce que je fais peut-être de mal? Je reçois toujours ce message lorsque j'exécute mon code python:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
Erreur
AttributeError: l'objet 'module' n'a pas d'attribut 'choix'
Tourné dans le noir: vous avez probablement nommé votre script random.py
. Ne nommez pas votre script du même nom que le module.
Je dis cela parce que le module random
a en effet une méthode choice
, donc l'importation est probablement en train de saisir le mauvais module (lire: indésirable).
pour moi le problème est que j'utilise
random.choices
dans python 3.6 dev local mais le serveur est python3.5 ne dispose pas de cette méthode ...
Cela ressemble à un problème d'importation. Y a-t-il un autre module dans le même répertoire nommé random
? Si oui (et si vous êtes sur python2, ce qui est évident d'après print random_item
) alors c'est l'importer à la place. Essayez de ne pas masquer les noms intégrés.
Vous pouvez tester cela avec le code suivant:
import random
print random.__file__
L'actuel random.py
le module de stdlib vit dans path/to/python/lib/random.py
. Si le vôtre est ailleurs, cela vous dira où il se trouve.
En bref, Python recherche dans le premier fichier qu'il trouve nommé "aléatoire" et ne trouve pas l'attribut de choix.
99,99% du temps, cela signifie que vous avez un fichier dans le chemin/répertoire qui est déjà nommé "aléatoire". Si c'est vrai, renommez-le et réessayez. Ça devrait marcher.
J'ai également obtenu cette erreur en nommant une méthode random
comme celle-ci:
import random
def random():
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
random()
Ce n'est pas votre cas (nommer un fichier random.py
) mais pour ceux qui recherchent cette erreur et peuvent la commettre.