DEV Community

Coder
Coder

Posted on • Updated on

TypeError: 'module' object is not callable in Python

If you are a beginner in Python, you might have encountered the error message TypeError: 'module' object is not callable while trying to call a function. This error can be quite frustrating and can halt your progress in writing Python code, especially if you don't understand what it means.

In this blog post, we'll explore what the TypeError: 'module' object is not callable error means, what causes it, and how to fix it. We'll also give some practical examples to help you understand this error better.

Understanding the 'module' object in Python

Before we dive into the error message, let's first understand what a module is in Python. A module is a file containing Python definitions, such as functions, classes, and variables. You can import a module into your Python code by using the import statement.

Here's an example of how to import the math module in Python:

import math

# Now you can use functions in the math module
print(math.sqrt(16))  # This will print 4.0
Enter fullscreen mode Exit fullscreen mode

As you can see, we imported the math module and were able to use the sqrt() function from that module.

Understanding the 'TypeError: 'module' object is not callable' error

The TypeError: 'module' object is not callable error usually occurs when you try to call a module like a function. For example, if you try to call the math module like a function, you'll get this error message:

import math

result = math(4)  # This will give you the TypeError: 'module' object is not callable error
Enter fullscreen mode Exit fullscreen mode

As you can see, we're trying to call the math module like it's a function, which is not possible.

What causes the 'TypeError: 'module' object is not callable' error?

The TypeError: 'module' object is not callable error is caused by a simple misunderstanding of how to use modules in Python. As we've seen earlier, a module is a file containing Python definitions like functions, classes, and variables. You cannot call a module like a function.

However, this error can also occur when you have an object in your code with the same name as a module. When you try to call the name as a function, Python will give you the TypeError: 'module' object is not callable error message.

How to fix the 'TypeError: 'module' object is not callable' error

The fix for the TypeError: 'module' object is not callable error is straightforward. You have to make sure that you're not trying to call a module like a function. Instead, you should import the module and use the functions or variables defined in that module.

Let's look at an example. Suppose you have a file called my_functions.py, which contains a function called add_numbers():

# my_functions.py

def add_numbers(a, b):
    return a + b
Enter fullscreen mode Exit fullscreen mode

Now, suppose you want to use the add_numbers() function in another file called main.py. Here's how you can do it:

# main.py

import my_functions

result = my_functions.add_numbers(2, 3)
print(result)  # This will print 5
Enter fullscreen mode Exit fullscreen mode

As you can see, we imported the my_functions module and used the add_numbers() function defined in that module.

If you're still getting the TypeError: 'module' object is not callable error, then it's possible that you have an object with the same name as a module in your code. In this case, you can rename your object or rename the module to avoid conflicts.

Practical Examples

Let's look at some practical examples to help you understand the TypeError: 'module' object is not callable error better.

Example 1: Calling a module like a function

Suppose you have the following code:

import math

result = math(4)  # This will give you the TypeError: 'module' object is not callable' error
Enter fullscreen mode Exit fullscreen mode

As we've seen earlier, you cannot call a module like a function. Instead, you should use the functions or variables defined in that module.

To fix this error, you have to use the correct syntax to call a function in the math module. Here's how you can do it:

import math

result = math.sqrt(4)
print(result)  # This will print 2.0
Enter fullscreen mode Exit fullscreen mode

In this example, we're calling the sqrt() function defined in the math module.

Example 2: Name conflict between a module and an object

Suppose you have the following code:

import random

random = 5
result = random(4)  # This will give you the TypeError: 'int' object is not callable error
Enter fullscreen mode Exit fullscreen mode

In this example, we have an object named random, which conflicts with the random module. When we try to call the random() function, Python thinks that we're trying to call the random object.

To fix this error, you have to rename either the object or the module to avoid conflicts. Here's how you can do it:

import random as rnd

random = 5
result = rnd.random(4)
print(result)  # This will print a random float between 0 and 1
Enter fullscreen mode Exit fullscreen mode

In this example, we renamed the random module to rnd using the as keyword. We can now use the functions defined in the random module without any conflicts.

Conclusion

The TypeError: 'module' object is not callable error can be quite frustrating when you're trying to call a function in a module. However, this error is easy to fix once you understand what causes it.

In this blog post, we've explored what a module is in Python, what the TypeError: 'module' object is not callable error means, what causes it, and how to fix it. We've also given some practical examples to help you understand this error better.

Remember to always check your code for any name conflicts between objects and modules, and make sure you're using the correct syntax to call functions in a module. Happy coding!

Top comments (0)