导入sklearn.ensemble的RandomForestRegressor出现ImportError如何解决
报错原因与解决方法
核心原因
该报错由scipy与scikit-learn版本不兼容导致:你当前环境中安装的scipy版本与scikit-learn依赖的scipy接口不匹配,sklearn调用scipy的cython编译接口时,找不到对应导出的C变量_export_expit。你使用的Python3.7版本对应的高版本scipy已经取消了该导出变量,而你安装的旧版sklearn仍依赖该接口,因此触发导入错误。
排查解决步骤
- 首先确认当前环境两个依赖库的版本,执行命令:
pip show scipy scikit-learn - 优先采用适配Python3.7的兼容版本组合解决冲突:
先卸载现有冲突版本:
pip uninstall -y scipy scikit-learn
再安装经过验证的兼容版本:
pip install scikit-learn==1.0.2 scipy==1.7.3
- 如果你使用conda管理环境,可以直接通过conda安装自动匹配依赖:
conda install scikit-learn scipy
- 若重装后仍报错,清理pip缓存后再重新安装即可:
pip cache purge pip install scikit-learn==1.0.2 scipy==1.7.3
- 额外排查:执行
pip -V确认当前pip对应的Python路径,和你运行代码的Python版本一致,避免多Python环境下库安装错位的问题。
内容的提问来源于stack exchange,提问作者user3064366
相关产品推荐
相关产品推荐

