TypeError: 'module' object is not callable
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
¿Por qué recibo este error? Estoy confundido.
¿Qué necesita saber para responder a mi pregunta?
483
3
socket
es un módulo que contiene la clasesocket
.Necesitas hacer
socket.socket(...)
ofrom socket import socket
:Observe que el error aquí es bastante fácil de entender: si
module object is not callable
, ¡probablemente está llamando a un objeto módulo! ¿Qué es un objeto módulo? Es el tipo de cosa que obtienes cuando importas un módulo.Pero incluso si no lo entiendes (lo cual está bien, a menudo es confuso que las clases, los módulos, las funciones, etc., sean sólo objetos como todo lo demás), hay una forma bastante fácil de empezar a depurar:
el objeto módulo no es llamable
. Eso suena como si estuviera intentando llamar a algo que no se puede llamar. Me pregunto a qué estoy tratando de llamar'"socket
. ¡Eso debería ser invocable! Me pregunto si la variable "socket" es lo que creo que es.print socket
Parece que lo que has hecho es importar el módulo
socket
comoimport socket
. Por lo tantosocket
es el módulo. Tienes que cambiar esa línea porself.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
, así como cualquier otro uso del módulosocket
, o cambiar la sentencia import porfrom socket import socket
.O tiene un
import socket
después de sufrom socket import *
:Sé que este hilo es de hace un año, pero el verdadero problema está en tu directorio de trabajo.
Creo que el directorio de trabajo es
C:\NAdministrador\NDocumentos\NMibot\oops\
. Por favor, busque el archivo llamadosocket.py
en este directorio. Una vez que lo encuentres, renómbralo o muévelo. Cuando importas socket, se utilizasocket.py
del directorio actual en lugar desocket.py
del directorio de Python's. Espero que esto te haya ayudado :)Nota: Nunca uses los nombres de archivo del directorio de Python's para guardar el nombre de tu programa's; entrará en conflicto con tu(s) programa(s).