How to Solve "ModuleNotFoundError: No module named 'skimage'" in Python
The ModuleNotFoundError: No module named 'skimage'
error in Python indicates that the scikit-image
library, a powerful package for image processing, is not installed in your current Python environment.
This guide provides a complete explanation for resolving this error, including detailed installation instructions for various environments, troubleshooting tips, and verification steps.
Understanding the Error
The ModuleNotFoundError
means Python can't find a module named skimage
when your code tries to import skimage
.
- This is almost always due to the package not being installed in the currently active environment, or a misconfiguration causing Python to look in the wrong place.
- It could also be due to a naming conflict (shadowing).
Basic Installation with pip
The standard and recommended way to install scikit-image
is using pip
:
pip install scikit-image
# OR, for Python 3 (might be pip3, pip3.10, etc. on your system)
pip3 install scikit-image
# OR, if pip is not in your PATH:
python -m pip install scikit-image
python3 -m pip install scikit-image
# OR, for Windows 'py' launcher:
py -m pip install scikit-image
Try each command in turn until one works. The python -m pip
form is often most reliable as it uses the specific Python interpreter you intend.
Troubleshooting
If you still get the ModuleNotFoundError
after installation, work through these steps:
Virtual Environments (Essential!)
Always use virtual environments for Python projects. This isolates dependencies.
-
Create:
python3 -m venv venv # Recommended. Uses built-in venv
# OR (if the above fails)
python -m venv venv
# OR (Windows)
py -m venv venv -
Activate:
-
Linux/macOS (bash/zsh):
source venv/bin/activate
-
Windows (Command Prompt):
venv\Scripts\activate.bat
-
Windows (PowerShell):
venv\Scripts\Activate.ps1
If you get a "running scripts is disabled" error in PowerShell, run this once (as administrator if necessary) and retry:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
-
-
Install inside the activated environment:
pip install scikit-image
Checking Your Python Version
Ensure you're installing with the correct Python version:
python --version # Or python3 --version, or py --version
If you have multiple Python versions, use the pip
associated with the correct one (e.g., pip3.9 install scikit-image
for Python 3.9).
Verifying the Installation
Confirm that the package is installed and the location is correct.
pip show scikit-image
# OR
python -m pip show scikit-image
This should display package information, including the Location
. It must be in your virtual environment's site-packages
(if using a venv) or a standard Python installation location. If it says "Package not found," it's not installed in the current environment.
IDE Interpreter Configuration (VS Code, PyCharm)
Your IDE must be configured to use the correct Python interpreter.
- *VS Code: Use the
Python: Select Interpreter
command (Command Palette:Ctrl+Shift+P
orCmd+Shift+P
). - *PyCharm:
File > Settings > Project > Python Interpreter
(orPyCharm > Preferences...
on macOS).
Naming Conflicts (Shadowing)
Crucially, make sure you don't have a file or directory named skimage.py
(or just skimage
) in your project directory or anywhere on your PYTHONPATH
. This "shadows" the installed scikit-image
package. Rename any such files/directories.
Reinstalling scikit-image
If you suspect a corrupted installation:
pip uninstall scikit-image
pip install scikit-image
Upgrading Pip
Make sure your pip is up to date. Run the following:
python -m pip install --upgrade pip
System Dependencies (Linux - Rare)
On some Linux distributions, you might need system-level dependencies. This is less common with scikit-image
than with some other scientific packages, but if you're still having trouble, try:
# Debian/Ubuntu
sudo apt update
sudo apt install build-essential python3-dev
Installation in Specific Environments
Anaconda
conda install -c anaconda scikit-image
- Always use conda to manage packages in your conda environments.
Jupyter Notebook
!pip install scikit-image
- The exclamation mark will run the command as if it was run in the shell.
A Basic Example
Once correctly installed, you can import and use skimage
:
import skimage
print(skimage.__version__) # Check the version to verify import
# Example usage (requires matplotlib for display)
from skimage import data, io
import matplotlib.pyplot as plt
image = data.coins() # Load a sample image
io.imshow(image)
plt.show()
Conclusion
The ModuleNotFoundError: No module named 'skimage'
error is usually easy to fix.
The most common problems are:
- incorrect installation (wrong environment).
- IDE misconfiguration.
- naming conflicts.
By carefully following the steps in this guide, especially using virtual environments and checking your interpreter settings, you can resolve the error and start using scikit-image
for your image processing tasks.