根本原因是环境错配或版本不兼容:未激活对应虚拟环境、pip与python指向不同解释器、xlrd≥2.0.0不支持.xlsx文件,或安装权限不足;应优先用pip install xlrd==1.2.0并验证sys.executable与xlrd.__file__路径一致。

直接用 pip install xlrd 就能装,但多数报错都出在版本或环境上,不是命令本身的问题。
为什么 pip install xlrd 会失败
常见现象是执行后提示 ModuleNotFoundError: No module named 'xlrd' 或 ImportError: Missing optional dependency 'xlrd',根本原因通常不是命令输错了,而是:
- 当前 Python 环境没激活(尤其用了
venv或conda却忘了source activate/activate) - 装到了另一个 Python 解释器里(比如系统 Python、Anaconda base、PyCharm 自带环境混了)
- 装的是
xlrd>=2.0.0,但它只读.xls,而你代码里传的是.xlsx文件,触发内部降级失败或静默报错 - 权限问题:没加
--user又没管理员权限,安装被拒绝但没明显提示
装哪个版本才真正可用
如果你要读 .xlsx 文件(绝大多数人的情况),xlrd>=2.0.0 会直接抛错或返回空数据 —— 它从 2.0 开始彻底放弃支持 .xlsx。
稳妥做法是锁定旧版:
使用位于 ci-tools.xrow.de 的 CI Tools 组件目录构建和维护 GitLab CI/CD 流水线,适用于创建或修复 .gitlab-ci.yml 文件,选择合适的组件。
-
pip install xlrd==1.2.0:兼容.xls和.xlsx,Python 3.6–3.9 通吃,遗留项目最稳的选择 -
pip install xlrd==0.9.3:更老但极轻量,适合只跑简单.xls的嵌入式或 CI 场景 - 别碰
xlrd==2.0.2或更高:它连open_workbook('test.xlsx')都会报XLRDError: Excel xlsx file; not supported
验证安装是否落到对的环境里
光看 pip install 成功不够,得确认 import 时用的是你刚装的那个解释器:
- 运行
python -c "import sys; print(sys.executable)",记下路径 - 再运行
python -c "import xlrd; print(xlrd.__file__)",检查输出路径是否和上一步一致 - 如果
__file__路径在site-packages之外(比如/tmp/...),说明可能被sys.path劫持或存在同名本地文件干扰 - Jupyter Notebook 用户:重启 kernel,否则即使重装也不会生效
conda 用户别混用 pip
用 conda 管理环境时,优先走 conda 渠道:
-
conda install -c conda-forge xlrd=1.2.0(推荐,依赖自动对齐) - 避免
pip install xlrd在 conda 环境里乱装,容易引发numpyABI 冲突或libpython版本错位 - 若已混用出问题,先
conda list xlrd看状态,再conda remove xlrd && pip install xlrd==1.2.0强制清理
真正麻烦的从来不是“怎么装”,而是装完发现 import 不报错、读文件却空着返回——那八成是版本和文件格式没对上,或者环境路径压根没切对。










