Python3.9使用fetch_openml下载MNIST时出现_bz2模块缺失报错
解决fetch_openml下载MNIST时的
ModuleNotFoundError: _bz2问题 问题场景
- Python版本:3.9.13
- 已执行
pip install scikit-learn安装scikit-learn,且已安装pandas - 运行以下代码时触发报错:
from sklearn.datasets import fetch_openml raw_data = fetch_openml('mnist_784')
- 报错末尾显示
fetch_openml with as_frame=True requires pandas.,但实际深层错误为:
ModuleNotFoundError: No module named '_bz2'
错误原因
_bz2是Python内置的bzip2压缩处理模块,OpenML获取MNIST数据集时需要用它解压数据。出现该错误的核心原因是Python编译时缺少bzip2依赖库,导致_bz2模块未被正确编译到Python环境中。
解决方法
Linux(Ubuntu/Debian)
- 安装bzip2开发依赖:
sudo apt-get install libbz2-dev
- 重新编译Python 3.9.13:
- 下载对应版本的Python源码并解压,进入源码目录
- 执行编译安装命令:
./configure --enable-optimizations make -j$(nproc) sudo make altinstall
macOS
- 用Homebrew安装bzip2:
brew install bzip2
- 指定bzip2路径重新编译Python:
./configure --enable-optimizations --with-bz2=$(brew --prefix bzip2) make -j$(sysctl -n hw.ncpu) sudo make altinstall
Windows
直接从Python官网下载并重新安装官方预编译的Python 3.9.13安装包,预编译版本已默认包含_bz2模块;若自行编译Python,需确保编译环境包含bzip2开发库。
内容的提问来源于stack exchange,提问作者Saphira
相关产品推荐
相关产品推荐

