WinError 126 Указанный модуль не может быть найден при импорте пакета scikit-learn? - PullRequest
1 голос
/ 04 августа 2020

Проблема

Я начинаю изучать машинное обучение, в одном из примеров курса используется пакет scikit-learn, и нам необходимо установить и применить то, что мы сделали до сих пор. Тем не менее, я попытался установить пакет, как инструктор курса, предложенный pip install scikit-learn во время установки, numpy, scipy, threadpoolctl и joblib были установлены в качестве предварительного условия для scikit-learn. Пока все хорошо, все было установлено без проблем. Но после этого, когда я пытаюсь импортировать пакет scikit-learn, например

from sklearn.tree import DecisionTreeRegressor

, я получаю следующую ошибку:

  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\hema-\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\__init__.py", line 74, in <module>
    from .base import clone
  File "C:\Users\hema-\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\base.py", line 20, in <module>
    from .utils import _IS_32BIT
  File "C:\Users\hema-\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\utils\__init__.py", line 18, in <module>
    from scipy.sparse import issparse
  File "C:\Users\hema-\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\scipy\__init__.py", line 136, in <module>
    from . import _distributor_init
  File "C:\Users\hema-\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\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.2288.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

Дело касается не только указанной выше строки импорта. , даже если я попытаюсь использовать только import sklearn, я получаю ту же ошибку.

После некоторых исследований и, как это рекомендовано на странице пакета , я использовал отдельные venv и установите туда пакет вместе с его зависимостями, чтобы избежать конфликтов. К сожалению, я все еще получаю ту же ошибку:

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Machine Learning\ml_demo\machine_learning_env\lib\site-packages\sklearn\__init__.py", line 80, in <module>
    from .base import clone
  File "D:\Machine Learning\ml_demo\machine_learning_env\lib\site-packages\sklearn\base.py", line 21, in <module>
    from .utils import _IS_32BIT
  File "D:\Machine Learning\ml_demo\machine_learning_env\lib\site-packages\sklearn\utils\__init__.py", line 20, in <module>
    from scipy.sparse import issparse
  File "D:\Machine Learning\ml_demo\machine_learning_env\lib\site-packages\scipy\__init__.py", line 136, in <module>
    from . import _distributor_init
  File "D:\Machine Learning\ml_demo\machine_learning_env\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.2288.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

Что еще я пробовал?

  • Я попытался переустановить.
  • Я также попытался установить wheel версия пакетов скачана с здесь . Однако возникла другая проблема: когда я пытаюсь установить колесо с помощью pip install scikit_learn-0.23.1-cp39-cp39-win_amd64.whl, я получаю следующую ошибку:
 ERROR: scikit_learn-0.23.1-cp39-cp39-win_amd64.whl is not a supported wheel on this platform.

Тем не менее я решил эту проблему, используя параметр --no-binary как указано здесь .

Моя среда

  • Я использую Python 3.7.8
  • OS Windows10
  • Список пакетов venv (мысль может помочь)

joblib 0.16.0 numpy 1.19.1 пункт 20.1.1 scikit-learn 0.23.1 scipy 1.5.2 setuptools 47.1.0 threadpoolctl 2.1.0

1 Ответ

0 голосов
/ 07 августа 2020

Сначала вы должны ввести этот код в свою оболочку. Убедитесь, что ваша версия pip не поддерживает cp39.

Итак, если ваш python pip не поддерживает cp39, пожалуйста, выберите более раннюю версию. Например:

scikit_learn ‑ 0.23.2 ‑ cp38 ‑ cp38 ‑ win_amd64.whl

И затем, когда вы загрузили этот профиль, скопируйте его на страницу своего сайта, Используйте эту команду в вашем Терминале.

pip install scikit_learn‑0.23.2‑cp38‑cp38‑win_amd64.whl

Я думаю, это будет работать! Надеюсь вам помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...