sklearn import fail because of scipy. OSError: [WinError 126] The specified module could not be found

sklearn import fail because of scipy. OSError: [WinError 126] The specified module could not be found

简介

我需要使用 'sklearn.cluster' 中的 'KMeans' 函数。我在 PyCharm 上使用 Python 3.7 和 virtualvenv 环境。我可以添加必要的包以便使用 pip 来使用 'sklearn'(我的意思是 'numpy'、'scipy'、'scikit-learn'...)。不幸的是,当我 运行 导入 'sklearn' 的 python 文件时出现错误。我不知道为什么会出现错误,我该如何解决...


我的问题是无法导入。当我 运行 from sklearn.cluster import KMeans 时,它 returns "OSError: [WinError 126]" :

Traceback (most recent call last):
  File "C:/Users/username/PycharmProjects/Test2/main.py", line 3, in <module>
    import sklearn
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\__init__.py", line 80, in <module>
    from .base import clone
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\base.py", line 21, in <module>
    from .utils import _IS_32BIT
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\utils\__init__.py", line 20, in <module>
    from scipy.sparse import issparse
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\scipy\__init__.py", line 136, in <module>
    from . import _distributor_init
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\scipy\_distributor_init.py", line 61, in <module>
    WinDLL(os.path.abspath(filename))
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\ctypes\__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

我认为软件包版本有问题。如果你想查看包版本(pip freeze 结果):

numpy==1.19.3
scikit-learn==0.23.2
scipy==1.5.4
sklearn==0.0
threadpoolctl==2.1.0

编辑

我发现 scipy 版本有问题。当我运行 'import scipy' 出现同类型的错误(OSError: [WinError 126] The specified module could not be found)。一个解决方案是将 scipy 1.5.4 降级到 scipy 1.4.1(参考 )。 [WinError 126] 错误消失。

不幸的是,另一个问题来了。现在当我 运行 from sklearn.cluster import KMeans 时,出现了这个错误:

Traceback (most recent call last):
  File "C:/Users/username/PycharmProjects/Test2/main.py", line 1, in <module>
    from sklearn.cluster import KMeans
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\__init__.py", line 80, in <module>
    from .base import clone
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\base.py", line 21, in <module>
    from .utils import _IS_32BIT
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\utils\__init__.py", line 23, in <module>
    from .class_weight import compute_class_weight, compute_sample_weight
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\utils\class_weight.py", line 7, in <module>
    from .validation import _deprecate_positional_args
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\utils\validation.py", line 25, in <module>
    from .fixes import _object_dtype_isnan, parse_version
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\sklearn\utils\fixes.py", line 18, in <module>
    import scipy.stats
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\scipy\stats\__init__.py", line 384, in <module>
    from .stats import *
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\scipy\stats\stats.py", line 179, in <module>
    from scipy.spatial.distance import cdist
  File "C:\Users\username\PycharmProjects\Test2\venv\lib\site-packages\scipy\spatial\__init__.py", line 99, in <module>
    from .qhull import *
ImportError: DLL load failed: The specified module could not be found.

这似乎是一个更常见的错误,所以我正在检查。

我找到了一个解决方案:使用 conda python 解释器。 PyCharm.

的 virtualvenv 环境可能有问题

如果您需要更多详细信息,请查看这个众所周知的 post:In pycharm ImportError: DLL load failed: The specified module could not be found. while importing facerecognition

我遇到了类似的问题,我的解决方案是设置一个新的虚拟环境并使用 python 3.9 解释器而不是 3.7。

这样ImportError: DLL load failed: The specified module could not be found。也解决了。

我希望你已经解决了这个问题,但也许其他人将来会遇到这个问题