Beste svaret
Uten å se kode er det vanskelig å komme med et definitivt svar, men Jeg tror problemet er at koden du importerer er noe som ligner på dette:
Du har en modul kalt fluff
og inne i den modulen har du en klasse kalt fluff;
i fluffklassen er det en metode som heter check\_output
Koden din ser slik ut:
import fluff
cfg = fluff.check\_output(stuff) # You want the fluff class here
Problemet er at alt som import fluff
gjør er å importere lo-modulen. Fluffklassen du trenger heter faktisk fluff.fluff.
Det 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 av grunnene til at navnekonvensjonen er så viktig – hvis modulene og klasser følger PEP8-navnekonvensjonene koden ville være
from fluff import Fluff # this imports the fluff class.
cfg = Fluff.check\_output(stuff) # You want the fluff class here
Den store bokstaven F kan være nok til å forhindre feil – eller i det minste peke deg inn i potensielle problemer
-——
Det andre potensielle svaret er at modulen du importerer blir skyggelagt av en annen fil (det er med andre ord en fil med samme navn som Python finner tidligere i søket etter hva du skal importere). Den vanligste årsaken til dette hos nybegynnere er når du navngir skriptet på samme måte som modulen du prøver å importere; siden Python ALLTID søker i den gjeldende katalogfilen hvis du har et skript kalt foo.py og det gjør et importer foo, vil den importen importere skriptet med navnet foo.py – sannsynligvis ikke det du vil ha.
Den beste måten å diagnostisere dette problemet er å åpne den interaktive konsollen i samme katalog og skrive:
>>> import
>>>
der
Svar
Uten å se på koden din, kan det være et av to problemer (men ikke begrenset til disse to) jeg kunne tenke på, rett utenfor flaggermusen, som er:
- Modulen er ikke riktig installert. Sjekk mappen for nettstedspakker for modulen. Hvis det er der, kan det være problem nr. 2, som er:
- Kjører ikke med en passende versjon av Python, dvs. installerer moduler ment for Python2 men ringer med Python3-import. Bruk pip for å avinstallere modulen, og prøv deretter å installere på nytt med pip3 for å få riktig versjon. Ikke sikker på hvorfor, men noen maskiner som Raspberry Pi Zero W v1.1 standard pip-kommandoen til Python2 i stedet for 3. Reinstallering med pip3 fungerte for meg, siden jeg kjører koden min med
python3
kommando i stedet for den vanligepython
.
Jeg kan foreslå en midlertidig «skitten» løsning som er å kopiere moduskilden til din arbeidskatalog, dvs. tar “modul” -mappen og plasserer den i samme mappe som kildefilen du kjører. Det kan også være at du har klonet et git-arkiv eller hentet fra en .zip-mappe som har module.py-filen i en annen mappe, som er i en annen mappe med samme navn. I dette tilfellet kan det hjelpe å importere module.module som modul i stedet for bare å importere modulen med en gang, akkurat slik:
import module.module as module
i stedet for
import module
som reduserer mengden endringer i koden din. Lykke til!