TypeError: ‘module’ object is not callable
Tags: python, programming, codenewbie, tutorial
Published: 2021-09-11 07:08:35

---
title: TypeError: ‘module’ object is not callable
published: true
date: 2021-09-10 13:28:01 UTC
tags: #python #programming #codenewbie #tutorial
canonical_url: https://itsmycode.com/typeerror-module-object-is-not-callable/
---

ItsMyCode |

Python throws **TypeError: ‘module’ object is not callable** when you get confused between the class name and module name. There are several reasons why this might happen while coding. Let’s look at each scenario, and the solution to fix the ‘ **module** ‘ object is not callable error.

## What is TypeError: ‘module’ object is not callable in Python?

You will get this error when you call a module object instead of calling a class or function inside that module object. In Python, a callable object must be a class or a function that implements the “ **` __call__ `” method.**

## ** Example 1 – Calling a built-in Python module as a function **

** ** The below code is a straightforward example of importing a socket module in Python, and after the import, we are accessing the module as a function. Since we use the same name and run the “`socket`” module name as a function, Python will throw  **TypeError: ‘module’ object is not callable.**

```python
#Importing the socket module in Python

import socket
#Calling the os module as a function
s = socket(socket.AF_INET, socket.SOCK_STREAM)
print(s)
 
```

**Output**

```
Traceback (most recent call last):
  File "c:\Projects\Tryouts\Python Tutorial.py", line 2, in <module>
    s = socket(socket.AF_INET, socket.SOCK_STREAM)
TypeError: 'module' object is not callable
```

It mostly happens with developers who tend to get confused between the **module name** and the **class names.**

**Solution 1 – **  Instead of directly calling the module name, call the function using **Modulename.FunctionName** , which is defined inside the module.

```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(s)
 
```

**Solution 2 –  ** Another solution is to change the import statement, as shown below. Here the compiler will not get confused between the module name and the function name while executing the code.

```
from socket import *
 
s = socket(AF_INET, SOCK_STREAM)
print(s)
```

**Output**

```
<socket.socket fd=444, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
```

## Example 2 – Calling custom module as a function

Another scenario where we have a custom module as “ **namemodule** ” and using this as a function that leads to **TypeError**.

Below example we have created a file with **namemodule.py**

```python
def namemodule():
 name='Chandler Bing'
 print(name)
```

In the second step we are trying to import the namemodule and calling it as a function which leads to **TypeError**.

```
import namemodule

print(namemodule())
```

**Solution:**  Instead of importing the module, you can import the function or attribute inside the module to avoid the typeerror module object is not callable, as shown below.

```python
from namemodule import namemodule

print(namemodule())

# Output
# Chandler Bing
```

The post [TypeError: ‘module’ object is not callable](https://itsmycode.com/typeerror-module-object-is-not-callable/) appeared first on [ItsMyCode](https://itsmycode.com).