运行scikit-learn K近邻时出现“OSError: GetModuleFileNameEx failed”错误原因咨询
解决scikit-learn KNeighborsClassifier偶发
OSError: GetModuleFileNameEx failed问题 问题背景
- 使用
KNeighborsClassifier(n_neighbors=3)执行多分类任务,调用.fit()训练、.predict()预测时,偶发OSError: GetModuleFileNameEx failed错误,代码循环运行时约50%概率触发崩溃 - 已测试scikit-learn 1.3.0和1.2.0版本,问题均存在
- 使用Anaconda作为Python包管理器
可行解决方案
1. 更新依赖库
该错误多与底层MKL或OpenMP库冲突有关,Anaconda环境下执行以下命令更新核心依赖:
conda update scikit-learn numpy scipy mkl
更新完成后重启Python环境再测试。
2. 禁用多线程并行
KNeighborsClassifier默认启用多线程加速,线程资源竞争可能引发该错误,强制单线程运行:
from sklearn.neighbors import KNeighborsClassifier # 初始化模型时设置单线程 knn = KNeighborsClassifier(n_neighbors=3, n_jobs=1) knn.fit(X_train, y_train) y_pred = knn.predict(X_test)
3. 切换BLAS后端
Anaconda默认使用MKL后端,尝试切换为OpenBLAS:
conda install -c conda-forge scikit-learn openblas
安装后验证后端配置:
import sklearn print(sklearn.show_versions())
确认BLAS/LAPACK后端为OpenBLAS后再运行代码。
4. 重建干净环境
若上述方法无效,可能是环境依赖混乱,新建纯净Anaconda环境:
conda create -n clean_sklearn python=3.10 scikit-learn=1.3.0 numpy scipy conda activate clean_sklearn
在新环境中执行代码,排除旧环境的依赖冲突。
内容的提问来源于stack exchange,提问作者user24637682
相关产品推荐
相关产品推荐

