由于 scipy,sklearn 导入失败。 OSError: [WinError 126] 找不到指定的模块

Posted

技术标签:

【中文标题】由于 scipy,sklearn 导入失败。 OSError: [WinError 126] 找不到指定的模块【英文标题】:sklearn import fail because of scipy. OSError: [WinError 126] The specified module could not be found 【发布时间】:2021-03-21 17:04:21 【问题描述】:

简介

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


我的问题是导入不起作用。当我运行from sklearn.cluster import KMeans 时,它返回“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(参考 Error when loading scipy: OSError: [WinError 126] The specified module could not be found)。 [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.

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

【问题讨论】:

欢迎来到 SO!这个问题不清楚。您是否正在尝试修复损坏的包裹?请考虑将您的帖子改写为更具体。您也可以阅读how to ask 和on-topic questions at SO。 感谢您的评论!我已经解决了我的问题,我希望它可以帮助其他人。我将编辑问题以使其更易于理解。 【参考方案1】:

我找到了解决方案:使用 conda python 解释器。 PyCharm的virtualvenv环境可能有问题。

如果您想了解更多详细信息,请查看这篇众所周知的帖子:In pycharm ImportError: DLL load failed: The specified module could not be found. while importing facerecognition

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于由于 scipy,sklearn 导入失败。 OSError: [WinError 126] 找不到指定的模块的主要内容,如果未能解决你的问题,请参考以下文章

scipy与sklearn下载与安装

无法导入 sklearn

SKlearn 导入 MLPClassifier 失败

ImportError:DLL 加载失败:找不到指定的过程。 (导入sklearn)

导入 sklearn 时出现不可排序的类型错误

您如何解决“未找到隐藏的导入!” pyinstaller 中针对 scipy 的警告?