Hvad er grunden til AttributeError: ' modul ' objekt har ingen attribut ' check\_output ', i Python?


Bedste svar

Uden at se kode er det svært at komme med et endeligt svar, men Jeg tror, ​​problemet er, at koden, du importerer, ligner noget her:

Du har et modul kaldet fluff og inde i det modul har du en klasse kaldes fluff; i klassen fluff er der en metode kaldet check\_output

Din kode ser sådan ud:

import fluff

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

Problemet er, at alt det import fluff gør er at importere fnugmodulet. Den fluffklasse, du har brug for, hedder faktisk fluff.fluff.

Der er to løsninger:

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

Dette er en af ​​grundene til, at navngivningskonventionen er så vigtig – hvis modulerne og klasser følger PEP8-navngivningskonventionerne, ville koden være

from fluff import Fluff # this imports the fluff class.

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

Den store bogstav F kan være tilstrækkelig til at forhindre fejl – eller i det mindste hente dig om potentielle problemer modulet, du importerer, skygges af en anden fil (med andre ord er der en fil med samme navn, som Python finder tidligere i sin søgning efter, hvad der skal importeres). Den mest almindelige årsag til dette hos begyndere er, når du navngiver dit script det samme som det modul, du prøver at importere; da Python ALTID søger i den aktuelle biblioteksfil, hvis du har et script kaldet foo.py og det gør et import foo, importerer den import scriptet med navnet foo.py – sandsynligvis ikke hvad du vil.

Den bedste måde at diagnosticere dette problem på er at åbne den interaktive konsol i samme bibliotek og skrive:

>>> import

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

hvor er navnet på det modul, du prøver at importere. Outputtet af kommandoen på linje 2 vil være stien til den fil, som Python forsøgte at importere, og du kan se, om det er her filen skal være.

Svar

Uden at kigge ved din kode kunne det være et af to problemer (men ikke begrænset til disse to) jeg kunne tænke på lige uden for flagermusen, som er:

  1. Modulet er ikke korrekt installeret. Tjek din webstedspakker-mappe for modulet. Hvis det er der, kan det være problem nej. 2, som er:
  2. Kører ikke med en passende version af Python, dvs. installerer moduler beregnet til Python2, men ringer med Python3-import. Brug pip til at afinstallere modulet, og prøv derefter at geninstallere med pip3 for at få den rigtige version. Ikke sikker på hvorfor, men nogle maskiner som min Raspberry Pi Zero W v1.1 standardindstiller pip-kommandoen til Python2 i stedet for 3. Geninstallation med pip3 fungerede for mig, da jeg kører min kode ved hjælp af python3 kommando i stedet for den sædvanlige python.

Jeg kunne foreslå en midlertidig “snavset” løsning, der er at kopiere modulkilden til din arbejdskatalog, dvs. tage mappen “modul” og placere den i samme mappe som kildefilen, du kører. Det kan også være, at du har klonet et git-arkiv eller ekstraheret fra en .zip-mappe, der har module.py-filen i en anden mappe, som er i en anden mappe med samme navn. I dette tilfælde kan det hjælpe med at importere module.module som modul i stedet for blot at importere modulet med det samme, ligesom dette:

import module.module as module

i stedet for

import module

hvilket reducerer mængden af ​​ændringer i din kode. Held og lykke!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *