运行Python代码报错No Module Named 'sklearn.decomposition.pca'如何解决
问题原因
- scikit-learn版本迭代导致导入路径失效:scikit-learn v0.22及更早版本曾支持
sklearn.decomposition.pca小写模块路径,v0.23版本之后官方移除了该小写路径别名,PCA功能统一收敛到sklearn.decomposition.PCA类下。你使用的网络代码基于老旧版本scikit-learn编写,对应导入路径已在新版本中被删除。 - 虚拟环境冲突:你反复重装scikit-learn时可能操作的不是当前代码运行对应的Python环境,例如全局环境安装了依赖,但代码实际运行在独立的conda/venv虚拟环境中,不同环境的依赖互不互通。
解决方案
- 优先修正导入语句:将代码中所有涉及
sklearn.decomposition.pca的导入逻辑替换为适配新版本的写法,示例如下:
# 正确导入写法 from sklearn.decomposition import PCA
类似from sklearn.decomposition.pca import PCA、import sklearn.decomposition.pca as pca的旧写法全部替换为上述格式即可直接解决报错。
- 若需兼容旧代码不想修改导入逻辑,可安装支持旧路径的最后一个scikit-learn版本:
pip install scikit-learn==0.22.2.post1
注意该版本已停止维护,不建议长期使用。 - 排查环境一致性问题:执行以下命令查看当前命令行环境的scikit-learn版本:
pip show scikit-learn
同时确认你运行代码的IDE/脚本使用的Python解释器路径,和执行pip命令的Python路径是否一致(Linux/macOS执行which python、Windows执行where python可查看当前命令行Python路径),确保在同一个环境中操作依赖。
内容的提问来源于stack exchange,提问作者Sevcan Gürbüz
相关产品推荐
相关产品推荐

