Care este motivul erorii AttributeError: ' modul ' obiectul nu are nici un atribut ' check\_output ', în Python?


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

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

unde este numele modulului pe care încercați să-l importați. Ieșirea comenzii de pe linia 2 va fi calea fișierului pe care Python a încercat să îl importe și puteți vedea dacă acesta ar trebui să fie fișierul.

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: ​​

  1. 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:
  2. 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 de python 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!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *