Mai mult
TypeError: 'modul' obiectul nu este apelabilă
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
De ce primesc aceasta eroare? Am'm confuz.
De ce ai nevoie să știi să-mi răspunzi la întrebare?
483
9
priza
este un modul, care conține clasapriza
.Aveți nevoie pentru a face priza.socket (...) " sau " de la priza de import socket`:
Observați că eroarea aici este destul de ușor de înțeles: dacă modulul obiect nu este apelabilă`, vă sunt, probabil, de asteptare un modul obiect! Ce's un modul obiect? L's genul de lucru pe care îl obține atunci când importați un modul.
Dar, chiar dacă tu nu't înțeleagă că (ceea ce este bine, l's de multe ori confuze care clase, module, funcții, etc sunt doar obiecte, cum ar fi orice altceva), nu's o modalitate destul de ușor pentru a începe de depanare:
module obiect nu este apelabilă
. Asta sună ca și cum am'm încercat să sune ceva pe care le poate't sun. Mă întreb ce-am'm încercat să sun?"priza
. Care ar trebui să fie apelabile! Mă întreb dacă variabilapriza
este ceea ce cred eu că este?`print socket
Să presupunem că conținutul YourClass.py este:
Dacă utilizați:
În acest fel, am TypeError: 'modul' obiectul nu este apelabilă dacă ați încercat apoi să folosesc YourClass()`.
Dar, dacă utilizați:
sau de a folosi
YourClass.YourClass()
, funcționează pentru mine.Adauga la principaleleinit.py în YourClassParentDir, de exemplu:
Apoi, va avea o instanță a clasei gata atunci când importați într-un alt scenariu:
Aici este un alt prins, asta mi-a luat ceva timp să văd chiar și după ce a citit aceste posturi. Am fost crearea unui script pentru a apela mea python bin script-uri. Am fost obtinerea modulul nu nevărsat prea.
Mi zig fost că am fost de a face următoarele:
când mi-zag nevoie pentru a face următoarele:
În rezumat, verificați pachetul și modul de cuibărit.
Ceea ce încerc să fac este să aibă un directory script-uri care nu au .py extensie, și încă mai au 'bin' module pentru a fi în mypackage/bin și acestea au mi .py extensie. Sunt nou ambalaj, și încearcă să urmeze standardele cum sunt interpretarea ei. Deci, am la instalare root:
Dacă acest lucru nu este compatibil cu standardul, te rog, lasă-mă să știu.
Se pare ca ceea ce ai'am făcut este importat
socket
modul caimport priza
. Prin urmare,soclu
este modulul. Aveți nevoie pentru a schimba linia de la sine.serv = socket.socket(soclu.AF_INET, socket.SOCK_STREAM), precum și orice altă utilizare a
socketmodule, sau schimba declarația de import să
din priza de import priza`.Sau'am un import socket
după
de la priza de import *`:Știu că acest subiect este vechi de un an, dar problema reală este în directorul de lucru.
Eu cred că directorul de lucru este C:\Users\Administrator\Documents\Mibot\oops`. Vă rugăm să verificați pentru fișier numit
socket.py în acest director. Odată ce ați găsi, redenumi sau muta-l. Atunci când importați soclu,
socket.pydin directorul curent este folosit în loc de
socket.py de Python's director. Sper că acest lucru m-a ajutat. :)Notă: Nu utilizați numele de fișier de Python's director pentru a salva programul's nume de fișier; acesta va intra în conflict cu programul dvs.(e).
Un mod simplu de a rezolva această problemă este de a exporta
PYTHONPATH
variabil mediu. De exemplu, pentru Python 2.6 în Debian/GNU Linux:În alte sisteme de operare, mai întâi a găsi locația de acest modul sau `socket.py dosarul lui.
Atunci când configurați un console_scripts obtinerea a apărut în setup.py am gasit aceasta problema exista la momentul final de evaluare a fost un modul sau pachet, mai degrabă decât o funcție în cadrul modulului.
De exemplu
Ar fi fost
Așa că s-ar referi la o nevărsat funcție, mai degrabă decât modul în sine. Pare să nu fac nici o diferență dacă modulul are o dacă nume == 'principalele':` bloc. Acest lucru nu va face modulul nevărsat.
Cred că trebuie înlocuite în funcție nativă/variabilă sau altceva "modulul" prin setarea variabilă globală "modulul". doar imprima modul de a vedea ce este în ea.