TypeError: 'module' object is not callable TypeError: 'module' object is not callable python python

TypeError: 'module' object is not callable

socket is a module, containing the class socket.

You need to do socket.socket(...) or from socket import socket:

>>> import socket>>> socket<module 'socket' from 'C:\Python27\lib\socket.pyc'>>>> socket.socket<class 'socket._socketobject'>>>>>>> from socket import socket>>> socket<class 'socket._socketobject'>

This is what the error message means:
It says module object is not callable, because your code is calling a module object. A module object is the type of thing you get when you import a module. What you were trying to do is to call a class object within the module object that happens to have the same name as the module that contains it.

Here is a way to logically break down this sort of error:

  • "module object is not callable. Python is telling me my code trying to call something that cannot be called. What is my code trying to call?"
  • "The code is trying to call on socket. That should be callable! Is the variable socket is what I think it is?`
  • I should print out what socket is and check print socket

Assume that the content of YourClass.py is:

class YourClass:    # ......

If you use:

from YourClassParentDir import YourClass  # means YourClass.py

In this way, you will get TypeError: 'module' object is not callable if you then tried to call YourClass().

But, if you use:

from YourClassParentDir.YourClass import YourClass   # means Class YourClass

or use YourClass.YourClass(), it works.

Add to the main __init__.py in YourClassParentDir, e.g.:

from .YourClass import YourClass

Then, you will have an instance of your class ready when you import it into another script:

from YourClassParentDir import YourClass