Cel mai bun răspuns
Fără a vedea codul este dificil să găsim un răspuns definitiv, dar Cred că problema este că codul pe care îl importați este ceva similar cu acesta:
Aveți un modul numit fluff
și în interiorul acelui modul aveți o clasă numit fluff;
în clasa fluff există o metodă numită check\_output
Codul dvs. arată astfel:
import fluff
cfg = fluff.check\_output(stuff) # You want the fluff class here
Problema este că tot ceea ce import fluff
nu este să importe modulul fluff. Clasa de puf de care aveți nevoie se numește de fapt fluff.fluff.
Există două soluții:
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
Acesta este unul dintre motivele pentru care convenția de numire este atât de importantă – dacă modulele iar clasele respectă convențiile de denumire PEP8, codul ar fi
from fluff import Fluff # this imports the fluff class.
cfg = Fluff.check\_output(stuff) # You want the fluff class here
Acel „F” cu majuscule ar putea fi suficient pentru a preveni erorile – sau măcar să vă indice în posibile probleme
-——
Celălalt răspuns potențial este că modulul pe care îl importați este umbrit de un alt fișier (cu alte cuvinte, există un fișier cu același nume pe care Python îl găsește mai devreme în căutarea a ceea ce trebuie importat). Cea mai frecventă cauză a acestui lucru la începători este atunci când numiți scriptul la fel ca modulul pe care încercați să-l importați; deoarece Python caută ÎNTOTDEAUNA fișierul director curent dacă aveți un script numit „foo.py” și face „import foo”, acel import va importa scriptul numit „foo.py” – probabil nu ceea ce doriți.
Cel mai bun mod de a diagnostica această problemă este să deschideți consola interactivă în același director și să tastați:
>>> import
>>>
unde
Răspundeți
Fără a căuta la codul dvs., ar putea fi una dintre cele două probleme (dar nu limitat la aceste două) la care m-aș putea gândi, chiar de pe bat, care sunt:
- Modulul nu este instalat corect. Verificați modulul în folderul pachetelor de site-uri. Dacă este acolo, ar putea fi problema nr. 2, care este:
- Nu rulează cu o versiune adecvată a Python, adică instalarea modulelor destinate Python2, ci apelarea cu importul Python3. Utilizați pip pentru a dezinstala modulul, apoi încercați să reinstalați cu pip3 pentru a obține versiunea adecvată. Nu sunt sigur de ce, dar unele mașini precum Raspberry Pi Zero W v1.1 implicită comanda pip la Python2 în loc de 3. Reinstalarea cu pip3 a funcționat pentru mine, deoarece îmi rulez codul folosind
python3
comanda în loc depython
obișnuită.
Aș putea sugera o soluție temporară „murdară”, care este să copiați sursa modulului în directorul de lucru, adică luând folderul „modul” și plasându-l în același folder cu fișierul sursă pe care îl executați. Ar putea fi, de asemenea, că ați clonat un depozit git sau ați extras dintr-un folder .zip care are fișierul module.py într-un alt folder, care se află într-un alt folder cu același nume. În acest caz, s-ar putea să importați module.module ca modul în loc să importați modulul imediat, la fel:
import module.module as module
în loc de
import module
ceea ce reduce cantitatea de modificări din codul dvs. Mult succes!