Python 2.7中使用openpyxl报错:ImportError: No module named openpyxl
解决
ImportError: No module named openpyxl的问题 这大概率是你的Python运行环境和模块安装环境不匹配导致的——明明装了模块,但脚本所在的环境找不到它。下面是几个最常见的排查和解决方向:
1. 检查Python版本冲突
很多系统会同时装Python 2和Python 3,pip命令可能默认对应其中一个版本,而你运行脚本用的是另一个版本。比如:
- 用
pip install openpyxl把模块装在了Python 2环境,但用python3 your_script.py运行脚本,自然找不到。 - 解决办法:
- 先确认运行脚本的Python版本:
python --version - 用对应版本的
pip重新安装:- 对应Python3:
python3 -m pip install openpyxl - 对应Windows的Python launcher:
py -3 -m pip install openpyxl
- 对应Python3:
- 先确认运行脚本的Python版本:
2. 虚拟环境不匹配
如果你在用虚拟环境(virtualenv/venv),很可能你把openpyxl装在了全局Python环境里,但脚本是在激活的虚拟环境中运行的——两个环境是完全隔离的。
- 解决办法:
- 激活你的虚拟环境,然后重新安装:
pip install openpyxl - 或者退出虚拟环境,用全局Python运行脚本(前提是全局环境确实装了openpyxl)
- 激活你的虚拟环境,然后重新安装:
3. 权限或安装路径问题(Linux/macOS)
有时候pip会把模块安装到用户目录(而非系统目录),但如果你的脚本用系统权限运行(比如sudo),就会找不到用户目录下的模块。
- 可以尝试用用户权限重新安装:
pip install --user openpyxl - 尽量避免用
sudo pip安装,推荐用虚拟环境管理依赖更安全。
顺便提下你代码里的几个小问题,避免后续报错:
- Python是大小写敏感的,
wb.Save()要改成wb.save()(小写s) - 你定义的工作表变量是
ws,但后面用了sheet.append(...),这里应该改成ws.append(...),否则会报NameError from openpyxl import *虽然能运行,但更推荐明确导入需要的对象,比如from openpyxl import load_workbook,减少命名冲突风险
内容的提问来源于stack exchange,提问作者Carlos Siestrup




