Skip to main content

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 the pip corresponding to the Python version running your script (usually pip3 or python3 -m pip). Verify with python --version and pip --version (or pip3 --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.
  • Permissions Issues (--user or sudo): 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.
  • 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 named openpyxl.py. This "shadows" the installed package. Rename your file if necessary. Also, avoid using openpyxl 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 or python3 -m pip. Use sudo 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:
    !pip install openpyxl
    # Or: !pip install openpyxl --user
    Restart the kernel after installation.

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.