一.问题描述
报错一大片红,描述为
sklearn ImportError: DLL load failed while importing _ufuncs: 找不到指定的程序。
二、解决思路
是scikit-learn包和它所依赖的numpy、matplotlib、Pandas、scipy等包版本冲突问题。
1.尝试使用conda删除重装:
conda remove scikit-learn
conda remove scipy
conda remove numpy
反复操作无效
2.升级scikit-learn版本为1.2.0
无效
三、解决方案:pip
弃用conda管理包,删除 scikit-learn 及其相关所有依赖后用pip重装
1.在当前虚拟环境下删除scikit-learn
打开conda 控制台,激活当前环境,并删除scikit-learn
conda remove scikit-learn
2.使用pip重新安装
这时会提示你的要求已被满足,并给出了相关依赖地址。
进入相关文件夹,删除对应的所有同名文件和dist-info文件,如下图
再次执行
pip install scikit-learn
pip的包管理较成熟些,结果如下
sklearn可以正常调用了,以下是一个使用的sklearn的svm的程序,成功跑通:
四、总结
Conda只适合用来创建虚拟环境。除了Anaconda特别优化或独有的包以外,应当尽量用pip进行管理。
具体做法:
在conda create创建虚拟环境的时候
将必须由conda安装的package全部写到参数中,其他的package在环境创建完成后使用pip安装。
引用:
为什么conda装包那么难用? - 知乎 (zhihu.com)