You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python sklearn分类时遇ImportError: DLL加载失败问题求助

解决sklearn导入时的ImportError: DLL load failed问题

我是Python与数据挖掘初学者,使用Python 3.6在PyCharm中调用sklearn的train_test_split实现分类时,遭遇ImportError: DLL load failed: The specified procedure could not be found错误,相关包已更新至最新。

代码片段

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import neighbors
import pandas as pd
df = pd.read_csv('breast-cancer-wisconsin.data')
df.replace('?', -9999, inplace=True)
df.drop(['id'], 1, inplace=True)
X = np.array(df.drop(['class'], 1))
y = np.array(df['class'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
clf = neighbors.KNeighborsClassifier()
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)
print(accuracy)

报错信息

Traceback (most recent call last):
  File "C:/Users/Mahin/Google Drive/Workspace/Local Accuracy of Classifiers/Learning/LearningRegression.py", line 2, in <module>
    from sklearn.model_selection import train_test_split
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\sklearn\__init__.py", line 134, in <module>
    from .base import clone
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\sklearn\base.py", line 13, in <module>
    from .utils.fixes import signature
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\sklearn\utils\__init__.py", line 11, in <module>
    from .validation import (as_float_array,
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\sklearn\utils\validation.py", line 18, in <module>
    from ..utils.fixes import signature
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\sklearn\utils\fixes.py", line 144, in <module>
    from scipy.sparse.linalg import lsqr as sparse_lsqr  # noqa
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\scipy\sparse\linalg\__init__.py", line 118, in <module>
    from .matfuncs import *
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\scipy\sparse\linalg\matfuncs.py", line 19, in <module>
    import scipy.special
  File "C:\Users\Mahin\Google Drive\Workspace\Local Accuracy of Classifiers\venv\lib\site-packages\scipy\special\__init__.py", line 640, in <module>
    from ._ufuncs import *
ImportError: DLL load failed: The specified procedure could not be found.

可能原因分析

从报错栈能看出来,问题其实出在scipy.special的DLL加载上,而非sklearn本身。结合你使用的Python 3.6,大概率是以下几种情况:

  • 版本不兼容:最新版的scipy已不再支持Python 3.6,强行更新到最新版会出现DLL不匹配的问题。
  • 缺失系统依赖库:scipy的部分功能依赖Windows系统的VC++运行库,若系统未安装或版本不对,会触发DLL加载失败。
  • 虚拟环境混乱:虚拟环境中可能存在不同版本的依赖包相互冲突,比如numpy和scipy版本不匹配。

可行解决方案

给你几个按优先级排序的解决办法,你可以逐个尝试:

  1. 降级scipy到兼容Python 3.6的版本
    打开PyCharm终端,激活虚拟环境后执行:

    pip install scipy==1.5.4
    

    这个版本是最后一个支持Python 3.6的scipy稳定版,能有效解决版本不兼容问题。

  2. 安装/更新VC++运行库
    安装Visual C++ Redistributable for Visual Studio 2017(注意匹配系统位数:32位或64位),很多Python科学计算库都依赖该运行库,安装完成后重启PyCharm再测试。

  3. 重新创建干净的虚拟环境
    如果上述方法无效,可能是虚拟环境已混乱。可以删掉现有虚拟环境,重新创建:

    • 删除当前的venv文件夹
    • 新建虚拟环境,指定Python 3.6作为解释器
    • 依次安装兼容版本的依赖包:
      pip install numpy==1.19.5 pandas==1.1.5 scikit-learn==0.24.2 scipy==1.5.4
      

    这些版本均经过验证,与Python 3.6完全兼容。

  4. 检查Python位数与系统位数是否匹配
    确认安装的Python 3.6与Windows系统位数一致(均为32位或64位),若32位Python安装了64位scipy,也会出现DLL加载失败问题。

希望这些方法能帮你解决问题!

内容的提问来源于stack exchange,提问作者Mahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:10:42