Bästa svaret
Utan att se kod är det svårt att komma med ett definitivt svar, men Jag tror att problemet är att koden du importerar är något som liknar den här:
Du har en modul som heter fluff
och inuti den modulen har du en klass heter fluff;
i fluffklassen det finns en metod som heter check\_output
Din kod ser ut så här:
import fluff
cfg = fluff.check\_output(stuff) # You want the fluff class here
Problemet är att allt som import fluff
gör är att importera fluffmodulen. Fluffklassen du behöver kallas faktiskt fluff.fluff.
Det finns två lösningar:
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
Detta är en av anledningarna till att namngivningskonventionen är så viktig – om modulerna och klasser följer PEP8-namngivningskonventionerna koden skulle vara
from fluff import Fluff # this imports the fluff class.
cfg = Fluff.check\_output(stuff) # You want the fluff class here
Det stora ”F” kan räcka för att förhindra fel – eller åtminstone leda dig till potentiella problem
-——
Det andra potentiella svaret är att modulen du importerar skuggas av en annan fil (det finns med andra ord en fil med samma namn som Python hittar tidigare i sin sökning efter vad som ska importeras). Den vanligaste orsaken till detta hos nybörjare är när du namnger ditt skript på samma sätt som modulen du försöker importera; eftersom Python ALLTID söker i den aktuella katalogfilen om du har ett skript som heter ”foo.py” och det gör ett ”import foo”, importerar den importen skriptet ”foo.py” – förmodligen inte vad du vill.
Det bästa sättet att diagnostisera problemet är att öppna den interaktiva konsolen i samma katalog och skriva:
>>> import
>>>
där
Svar
Utan att titta vid din kod kan det vara ett av två problem (men inte begränsat till dessa två) jag skulle kunna tänka på, direkt från bat, som är:
- Modulen är inte korrekt installerad. Kontrollera din webbplatspaketmapp för modulen. Om det är där kan det vara problem nej. 2, vilket är:
- Körs inte med en lämplig version av Python, dvs installera moduler avsedda för Python2 men ringa med Python3-import. Använd pip för att avinstallera modulen och försök sedan installera om med pip3 för att få rätt version. Inte säker på varför men vissa maskiner som min Raspberry Pi Zero W v1.1 standardinstallerar pip-kommandot till Python2 istället för 3. Ominstallering med pip3 fungerade för mig, eftersom jag kör min kod med
python3
kommando istället för det vanligapython
.
Jag kan föreslå en tillfällig ”smutsig” lösning som är att kopiera modulkällan till din arbetskatalog, dvs ta ”modul” -mappen och placera den i samma mapp som källfilen du kör. Det kan också vara så att du har klonat ett git-arkiv eller extraherat från en .zip-mapp som har module.py-filen i en annan mapp, som finns i en annan mapp med samma namn. I det här fallet kan det hjälpa att importera module.module som modul istället för att bara importera modulen direkt, precis så här:
import module.module as module
istället för
import module
vilket minskar mängden ändringar i din kod. Lycka till!