ImportError: No module named X (Fix)
This error happens when Python tries to import a module but cannot find it.
In many cases, the fix is simple:
- The package is not installed
- It was installed in the wrong Python environment
- The import name is wrong
- Your own file name is blocking the real module
Start with the fastest checks first. That usually solves the problem quickly.
Quick fix
python -m pip install package_name
Use the same Python interpreter that runs your script. Replace package_name with the real package name.
For example:
python -m pip install requests
If your system uses python3, try:
python3 -m pip install requests
What this error means
ImportError: No module named X means Python looked for a module and could not find it.
The missing module might be:
- A third-party package such as
requests - A local Python file you created
- A module that exists in a different virtual environment
This page focuses on the specific error message "No module named X".
Common message example
A common example looks like this:
import requests
Possible error:
ImportError: No module named requests
The important part is the name after named.
In this case, Python could not find requests.
Check that exact name before changing anything else.
Most common causes
The most common reasons are:
- The package is not installed
- The package was installed in a different Python version or virtual environment
- The module name is spelled wrong
- The installed package name and import name are different
- Your file or folder name shadows the real module
- You are running the script from the wrong folder
- The module exists, but Python cannot see its location
Fix 1: Install the missing package
If the missing module is a third-party package, install it first.
Use:
python -m pip install package_name
This is better than plain pip install because it helps pip use the same Python interpreter as your script.
Example:
python -m pip install requests
Then run your script again.
You can also check whether the package is already installed:
python -m pip show requests
If you are new to package installation, see how to install a Python package with pip.
Fix 2: Check the import name
Sometimes the package name and the import name are not the same.
Example:
- Install with
beautifulsoup4 - Import with
bs4
This is correct:
from bs4 import BeautifulSoup
Install command:
python -m pip install beautifulsoup4
Another example:
import PIL
The package is installed with:
python -m pip install Pillow
So if installation worked but the import still fails, check the package documentation and confirm the correct import name.
Fix 3: Check your virtual environment
If you use a virtual environment, you must activate it before installing packages or running your script.
A package installed in one environment is not available in another.
Typical problem:
- You installed
requestsglobally - Your script runs inside a virtual environment
- That virtual environment does not have
requests
Example workflow:
python -m venv .venv
Activate it, then install:
python -m pip install requests
If virtual environments are confusing, read how to create and use a virtual environment in Python.
Fix 4: Look for naming conflicts
Your own file or folder can block Python from importing the real module.
For example, this file name is a problem:
requests.py
Then this code:
import requests
may import your file instead of the real package, or fail with an import error.
Other common bad file names:
json.pysys.pyrandom.py
Also check for:
- A folder with the same name as the package
- Old
__pycache__files after renaming a file
If needed, rename your file and delete __pycache__.
Example problem:
project/
├─ requests.py
└─ app.py
Inside app.py:
import requests
Fix:
- Rename
requests.pyto something likemy_requests_test.py - Delete any
__pycache__folder - Run the script again
Fix 5: Check local files and folders
If you are importing your own module, make sure the file actually exists and is in a place Python can find.
Example folder:
project/
├─ main.py
└─ helpers.py
This works in main.py:
import helpers
print("Imported successfully")
But if helpers.py is missing, moved, or in another folder, Python may raise this error.
Also, imports can fail if you run the script from a different working directory than expected.
If you want to understand why location matters, read how imports work in Python.
Debugging steps
If the error is still not clear, these checks usually reveal the problem.
Check which Python runs your script
python -c "import sys; print(sys.executable)"
This shows the exact Python interpreter being used.
Check where Python looks for modules
python -c "import sys; print(sys.path)"
This prints the list of folders Python searches for imports.
You can learn more in sys.path explained and the Python sys module overview.
Check which Python pip uses
python -m pip --version
This helps confirm whether pip is connected to the same Python installation.
Check whether the package is installed
python -m pip show package_name
Example:
python -m pip show requests
Test the import directly
python -c "import package_name"
Example:
python -c "import requests"
If this command fails, the package still is not available to that Python interpreter.
Example fixes to show
Example 1: Missing third-party package
Code:
import requests
response = requests.get("https://example.com")
print(response.status_code)
Error:
ImportError: No module named requests
Fix:
python -m pip install requests
Then run the script again.
Example 2: Wrong import name
Incorrect:
import beautifulsoup4
This fails because the import name is not beautifulsoup4.
Correct:
from bs4 import BeautifulSoup
Install with:
python -m pip install beautifulsoup4
Example 3: File named the same as a module
Problem file:
json.py
Problem code:
import json
Fix:
- Rename
json.pyto something else - Delete
__pycache__ - Run the script again
Example 4: Virtual environment mismatch
You install a package here:
python -m pip install requests
But your editor runs a different interpreter.
Check both:
python -c "import sys; print(sys.executable)"
python -m pip --version
If they point to different Python installations, switch your editor or terminal to the correct environment.
When this is ModuleNotFoundError instead
In modern Python versions, this problem often appears as:
ModuleNotFoundError: No module named 'requests'
ModuleNotFoundError is closely related to ImportError, but it is more specific.
If you see that version of the message, read ModuleNotFoundError: No module named X (Fix).
If your problem is different and Python finds the module but fails to import something from it, see ImportError: cannot import name (Fix).
FAQ
Why do I get this error even after installing the package?
You probably installed it in a different Python version or virtual environment than the one running your script.
Check:
python -c "import sys; print(sys.executable)"
python -m pip --version
Those should match the same Python setup.
What is the difference between ImportError and ModuleNotFoundError?
ModuleNotFoundError is a more specific import error. It is used when Python cannot find the module at all.
ImportError is broader and can happen for other import-related problems too.
Can my file name cause this error?
Yes.
A file such as json.py, sys.py, or requests.py can stop Python from importing the real module.
Rename the file, then remove any __pycache__ folders.
Should I use pip install or python -m pip install?
Use python -m pip install when possible.
It is safer because it uses the selected Python interpreter, which helps avoid environment mismatches.