sklearn.model_selection加载DLL失败求助:TensorFlow示例运行报错
针对你在WinPython 3.5 64位环境下使用sklearn 0.19.1遇到的DLL加载问题,结合你的精简测试代码,我整理了几个实用的排查和解决步骤:
检查依赖DLL完整性
sklearn 0.19.1依赖OpenBLAS或MKL这类底层数学库,WinPython虽自带依赖,但可能存在DLL缺失或路径未被识别的情况。你可以前往WinPython安装目录下的python-3.5.x/Lib/site-packages/scipy/.libs和sklearn/.libs文件夹,确认是否存在libopenblas.dll这类核心依赖文件。如果缺失,建议重新安装WinPython完整包,避免自定义跳过组件。验证位数匹配
确保Python和sklearn都是64位版本:- 打开WinPython的命令行,执行
python -c "import struct; print(struct.calcsize('P') * 8)",输出应为64; - 再执行
pip show scikit-learn,查看Location字段对应的包是否为win_amd64版本。若位数不匹配,卸载现有sklearn后重新安装对应版本。
- 打开WinPython的命令行,执行
配置PATH环境变量
Windows可能无法自动找到WinPython的DLL路径,手动添加以下目录到系统PATH:[你的WinPython路径]/python-3.5.x/DLLs[你的WinPython路径]/python-3.5.x/Lib/site-packages/scipy/.libs[你的WinPython路径]/python-3.5.x/Lib/site-packages/sklearn/.libs
添加后重启命令行再运行测试代码。
调整sklearn版本
sklearn 0.19.1与Python3.5虽兼容,但特定版本可能存在兼容性bug。你可以尝试:- 升级到Python3.5支持的最高sklearn版本:
pip uninstall scikit-learn && pip install scikit-learn==0.20.4 - 或降级到更稳定的0.18.2版本:
pip uninstall scikit-learn && pip install scikit-learn==0.18.2
- 升级到Python3.5支持的最高sklearn版本:
修复WinPython安装
如果以上步骤都无效,大概率是WinPython安装包损坏。卸载当前版本后,重新下载官方发布的64位WinPython 3.5完整安装包,全程选择默认安装选项,确保所有依赖组件被正确安装。
另外提一句:你的测试代码里注释掉from sklearn.cross_validation import train_test_split是正确的——sklearn 0.18之后这个模块就被废弃,train_test_split移到了model_selection下,这部分代码没有问题,错误根源不在此处。
内容的提问来源于stack exchange,提问作者cmacdona101

