python – TypeError: module object is not callable

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:Python27libsocket.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.

python – TypeError: module object is not callable

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

Leave a Reply

Your email address will not be published.