Qual é o motivo do AttributeError: ' módulo ' objeto não tem atributo ' check\_output ', em Python?


Melhor resposta

Sem ver o código, é difícil chegar a uma resposta definitiva, mas Acho que o problema é que o código que você está importando é algo semelhante a este:

Você tem um módulo chamado fluff e dentro desse módulo você tem uma classe chamado fluff; na classe fluff, há um método chamado check\_output

Seu código se parece com este:

import fluff

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

O problema é que tudo isso import fluff o que faz é importar o módulo fluff. A classe fluff de que você precisa é na verdade chamada fluff.fluff.

Existem duas soluções:

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

Esta é uma das razões pelas quais a convenção de nomenclatura é tão importante – se os módulos e as classes seguem as convenções de nomenclatura PEP8, o código seria

from fluff import Fluff # this imports the fluff class.

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

Esse F maiúsculo pode ser suficiente para evitar erros – ou pelo menos dar uma pista sobre possíveis problemas

-——

A outra resposta potencial é que o o módulo que você está importando está sendo seguido por outro arquivo (em outras palavras, há um arquivo com o mesmo nome que o Python encontrou anteriormente em sua busca pelo que importar). A causa mais comum disso em iniciantes é quando você nomeia seu script da mesma forma que o módulo que está tentando importar; visto que o Python SEMPRE pesquisa o arquivo do diretório atual se você tiver um script chamado foo.py e ele faz uma importação foo, essa importação importará o script chamado foo.py – provavelmente não o que você deseja. >

A melhor maneira de diagnosticar esse problema é abrir o console interativo no mesmo diretório e digitar:

>>> import

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

onde é o nome do módulo que você está tentando importar. A saída do comando na linha 2 será o caminho do arquivo que o Python tentou importar e você pode ver se é onde o arquivo deve estar.

Resposta

Sem olhar no seu código, pode ser um dos dois problemas (mas não se limitando a esses dois) que eu poderia pensar, de cara, que são:

  1. O módulo não está instalado corretamente. Verifique a pasta de pacotes do seu site para o módulo. Se estiver lá, pode ser o problema não. 2, que é:
  2. Não está executando com uma versão apropriada do Python, ou seja, instalando módulos destinados ao Python2, mas chamando com a importação do Python3. Use pip para desinstalar o módulo e, em seguida, tente reinstalar com pip3 para obter a versão apropriada. Não sei por que, mas algumas máquinas como meu Raspberry Pi Zero W v1.1 padronizam o comando pip para Python2 em vez de 3. A reinstalação com pip3 funcionou para mim, já que estou executando meu código usando o python3 comando em vez do usual python.

Eu poderia sugerir uma solução temporária “suja” que é copiar a fonte do módulo em seu diretório de trabalho, ou seja, pegar a pasta “módulo” e colocá-la na mesma pasta do arquivo de origem que você está executando. Também pode ser que você tenha clonado um repositório git ou extraído de uma pasta .zip que contém o arquivo module.py dentro de outra pasta, que está em outra pasta com o mesmo nome. Nesse caso, pode ser útil importar module.module como módulo em vez de simplesmente importar o módulo imediatamente, assim:

import module.module as module

em vez de

import module

o que reduz a quantidade de alterações em seu código. Boa sorte!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *