由于 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] 找不到指定的模块的主要内容,如果未能解决你的问题,请参考以下文章