How to Resolve "ModuleNotFoundError: No module named 'openpyxl'" in Python
The ModuleNotFoundError: No module named 'openpyxl'
is a common error in Python that arises when you try to import openpyxl
, but the library hasn't been installed in the Python environment your script is currently using. openpyxl
is a popular library for reading and writing Excel (xlsx/xlsm/xltx/xltm) files.
This guide provides step-by-step solutions to install openpyxl
correctly and resolve the error.
Understanding the Error
This error means Python searched its known locations for installed modules but couldn't find the openpyxl
package when your code executed import openpyxl
or from openpyxl import ...
.
Solution 1: Install openpyxl
using pip
(Most Common)
openpyxl
is a third-party library and needs to be installed using pip
, Python's package installer.
Open your terminal or command prompt and run:
pip install openpyxl
Variations (Choose the one appropriate for your setup):
# If you primarily use Python 3
pip3 install openpyxl
# If pip/pip3 are not in your system PATH
python -m pip install openpyxl
python3 -m pip install openpyxl
# On Windows, 'py' launcher might be available
py -m pip install openpyxl
Troubleshooting Common Installation Problems:
If pip install openpyxl
fails or the ModuleNotFoundError
persists, check these points:
- Using the Correct
pip
: If you have multiple Python versions, ensure you're using thepip
corresponding to the Python version running your script (usuallypip3
orpython3 -m pip
). Verify withpython --version
andpip --version
(orpip3 --version
). - Working with Virtual Environments (Crucial!): This is the most frequent cause of the error. You likely installed
openpyxl
globally but are running your script inside a virtual environment (or vice-versa).- Activate your virtual environment before installing:
# Create (if needed)
python3 -m venv venv
# Activate (adjust for your OS)
source venv/bin/activate # Linux/macOS
.\venv\Scripts\Activate.ps1 # Windows PowerShell
.\venv\Scripts\activate.bat # Windows CMD
# Install INSIDE the active environment
pip install openpyxl - Confirm your IDE (VS Code, PyCharm) uses the Python interpreter from the activated virtual environment.
- Activate your virtual environment before installing:
- Permissions Issues (
--user
orsudo
): When installing globally (outside a venv).- Recommended: Install for the current user:
pip install openpyxl --user
- Use Cautiously: Use admin/root privileges:
sudo pip install openpyxl
(Linux/macOS) or Run Terminal as Administrator (Windows). Virtual environments avoid this.
- Recommended: Install for the current user:
- Multiple Python Installations / IDE Configuration: Double-check that the Python interpreter selected in your IDE matches the one you used
pip
with. Use the "Select Interpreter" command in your IDE. - Naming Conflicts (
openpyxl.py
): Ensure none of your project files are namedopenpyxl.py
. This "shadows" the installed package. Rename your file if necessary. Also, avoid usingopenpyxl
as a variable name before the import.
Verifying Installation (pip show
)
Confirm openpyxl
is installed in the active environment:
pip show openpyxl
# Or variants like: pip3 show openpyxl / python3 -m pip show openpyxl
This command should display package details (Name, Version, Location, etc.). "Package(s) not found" means it's not installed in that environment.
Platform/Tool Specific Installation Notes:
- Windows: Use CMD or PowerShell.
py -m pip install openpyxl
is reliable. Use "Run as administrator" for global installs if needed (prefer venvs/--user
). - macOS / Linux: Use the Terminal. Use
pip3
orpython3 -m pip
. Usesudo
cautiously for global installs. - VS Code: Use the integrated terminal (
Ctrl + ``
). Ensure the correct interpreter (often venv) is active. - PyCharm: Use the Terminal (
Alt+F12
) or Python Packages tool (File > Settings > Project > Python Interpreter >+
). Ensure the correct project interpreter. - Anaconda: Use Anaconda Prompt/Navigator or terminal in an active conda environment. Preferred command:
conda install -c anaconda openpyxl
# Or sometimes just: conda install openpyxl
# Pip also works: pip install openpyxl - Jupyter Notebook: Install from a notebook cell:
Restart the kernel after installation.
!pip install openpyxl
# Or: !pip install openpyxl --user
Using openpyxl
After Installation
Once installed, you can import and use the library:
import datetime
from openpyxl import Workbook # Or load_workbook, etc.
try:
wb = Workbook()
ws = wb.active
ws['A1'] = 42
ws.append([1, 2, 3])
ws['A2'] = datetime.datetime.now()
wb.save("sample.xlsx")
print("Excel file 'sample.xlsx' created successfully.")
except ImportError:
print("Error: 'openpyxl' module not found. Please install it using 'pip install openpyxl'.")
except Exception as e:
print(f"An error occurred: {e}")
Conclusion
The ModuleNotFoundError: No module named 'openpyxl'
indicates that the openpyxl
library is missing from your active Python environment.
- The solution is to install it using
pip install openpyxl
. - Always ensure you are installing into the correct environment, preferably using a virtual environment, and verify that your IDE is configured accordingly.
- Double-check for naming conflicts with your own files.