Quelle est la raison de lerreur AttributeError: ' module ' lobjet na pas dattribut ' check\_output ', en Python?


Meilleure réponse

Sans voir le code, il est difficile de trouver une réponse définitive, mais Je pense que le problème est que le code que vous importez est quelque chose de similaire à ceci:

Vous avez un module appelé fluff et à lintérieur de ce module vous avez une classe appelée fluff; dans la classe fluff, il existe une méthode appelée check\_output

Votre code ressemble à ceci:

import fluff

cfg = fluff.check\_output(stuff) # You want the fluff class here

Le problème est que tout cela import fluff importe le module fluff. La classe de peluches dont vous avez besoin sappelle en fait fluff.fluff.

Il existe deux solutions:

1:

import fluff

cfg = fluff.fluff.check\_output(stuff) # You want the fluff class here

2:

from fluff import fluff # this imports the fluff class.

cfg = fluff.check\_output(stuff) # You want the fluff class here

Cest lune des raisons pour lesquelles la convention de dénomination est si importante – si les modules et les classes suivent les conventions de dénomination PEP8, le code serait

from fluff import Fluff # this imports the fluff class.

cfg = Fluff.check\_output(stuff) # You want the fluff class here

Ce «F» majuscule pourrait être suffisant pour éviter les erreurs – ou au moins vous indiquer des problèmes potentiels

-——

Lautre réponse potentielle est que le le module que vous importez est masqué par un autre fichier (en dautres termes, il existe un fichier du même nom que Python trouve plus tôt dans sa recherche de ce quil faut importer). La cause la plus courante de ceci chez les débutants est lorsque vous nommez votre script de la même manière que le module que vous essayez dimporter; puisque Python recherche TOUJOURS le fichier du répertoire courant si vous avez un script appelé «foo.py» et quil effectue un «import foo», cette importation importera le script nommé «foo.py» – probablement pas ce que vous voulez.

La meilleure façon de diagnostiquer ce problème est douvrir la console interactive dans le même répertoire et de saisir:

>>> import

>>> .\_\_file\_\_

est le nom du module que vous essayez dimporter. La sortie de la commande sur la ligne 2 sera le chemin du fichier que Python a essayé dimporter et vous pouvez voir si cest là que le fichier devrait être.

Réponse

Sans regarder au niveau de votre code, cela pourrait être lun des deux problèmes (mais pas limité à ces deux) auxquels je pourrais penser, dès le départ, qui sont:

  1. Le module nest pas correctement installé. Vérifiez votre dossier site-packages pour le module. Si cest là, ça pourrait être le problème no. 2, qui est:
  2. Ne fonctionne pas avec une version appropriée de Python, cest-à-dire installer des modules destinés à Python2 mais appeler avec limportation Python3. Utilisez pip pour désinstaller le module, puis essayez de réinstaller avec pip3 pour obtenir la version appropriée. Je ne sais pas pourquoi mais certaines machines comme mon Raspberry Pi Zero W v1.1 utilisent par défaut la commande pip sur Python2 au lieu de 3. La réinstallation avec pip3 a fonctionné pour moi, car jexécute mon code en utilisant le python3 au lieu de lhabituelle python.

Je pourrais suggérer une solution temporaire «sale» qui consiste à copier la source du module dans votre répertoire de travail, cest-à-dire en prenant le dossier «module» et en le plaçant dans le même dossier que le fichier source que vous exécutez. Il se peut également que vous ayez cloné un référentiel git ou extrait dun dossier .zip contenant le fichier module.py dans un autre dossier, qui se trouve dans un autre dossier du même nom. Dans ce cas, il peut être utile dimporter module.module en tant que module au lieu de simplement importer le module directement, comme ceci:

import module.module as module

au lieu de

import module

qui réduit la quantité de changements dans votre code. Bonne chance!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *