Ошибка при попытке импортировать модули sklearn: ImportError: ошибка загрузки DLL: указанный модуль не может быть найден

Я попытался выполнить следующие операции импорта для проекта машинного обучения:

from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression

Я получил это сообщение об ошибке:

Traceback (most recent call last):
  File "C:/Users/Abdelhalim/PycharmProjects/ML/stock pricing.py", line 4, in <module>
    from sklearn import preprocessing, cross_validation, svm
  File "C:\Python27\lib\site-packages\sklearn\__init__.py", line 57, in <module>
    from .base import clone
  File "C:\Python27\lib\site-packages\sklearn\base.py", line 12, in <module>
    from .utils.fixes import signature
  File "C:\Python27\lib\site-packages\sklearn\utils\__init__.py", line 11, in <module>
    from .validation import (as_float_array,
  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 18, in <module>
    from ..utils.fixes import signature
  File "C:\Python27\lib\site-packages\sklearn\utils\fixes.py", line 291, in <module>
    from scipy.sparse.linalg import lsqr as sparse_lsqr
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\__init__.py", line 112, in <module>
    from .isolve import *
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py", line 6, in <module>
    from .iterative import *
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py", line 7, in <module>
    from . import _iterative
ImportError: DLL load failed: The specified module could not be found.

Пожалуйста, помогите. Я все перепробовал, но ничего не помогло. Я тоже пробовал эти решения: ImportError: сбой загрузки DLL: специальный модуль доступен

​​ImportError: Ошибка загрузки DLL: указанный модуль мог не найдено


person Taha Abdelhalim Nakabi    schedule 26.12.2016    source источник
comment
Вам следует подумать о редактировании своего сообщения для ясности намерений и представления; в его нынешнем виде он выглядит таким неуклюжим, чтобы привлечь к нему должное внимание.   -  person nyedidikeke    schedule 26.12.2016


Ответы (7)


Вы должны открыть «C: \ Python27 \ lib \ site-packages \ sklearn \ utils \ fixes.py» и отредактировать содержимое. Вам следует внести два конкретных изменения:

Сначала скопируйте и вставьте содержимое https://github.com/scikit-learn/scikit-learn/blob/74a9756fa784d1f22873ad23c8b4948c6e290108/sklearn/utils/fixes.py в файл "C: \ Python27 \ lib \ site -packages \ sklearn \ utils \ fixes.py ".

Во-вторых, замените строку, если np_version < (1, 12, 0): на if np_version < (1, 12):.

Дополнительная справочная информация и подробности доступны здесь, в отличном ответе пользователя DSM.

person Joseph Lemien    schedule 12.03.2017
comment
Я даже не смог найти папку sklearn внутри site-packages, хотя я установил ее с помощью pip. - person Phạm Nhật Minh; 27.11.2019

Эта линия указывает на scipy.

from scipy.sparse.linalg import lsqr as sparse_lsqr

Ты можешь попробовать:

pip uninstall scipy

pip install scipy

Наслаждайтесь!

person chaggy    schedule 10.05.2018
comment
Я пробовал два или три метода, упомянутых в других ответах. Это сработало. Это коротко и просто - person SKT; 27.04.2020
comment
Это сработало для меня, спасибо - person Habibur Rahman; 08.02.2021

Переустановка пакетов scipy, numpy и scikit-learn устранила ошибку в моем случае.

person amiref    schedule 13.01.2021

Установите эту библиотеку numpy вместо той, которую вы используете:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

Я предполагаю, что у вас установлена ​​библиотека Intel Math Kernal Libary.

person Markus Appel    schedule 14.10.2017
comment
Этот подход сработал для меня. Сначала я удалил numpy с помощью pip uninstall numpy, а затем загрузил и установил версию numpy по ссылке, опубликованной @Markus Appel. - person edesz; 06.03.2019

Я нашел глупое решение, похожее на @saggy: итеративно запускайте скрипт из командной строки, если сравниваете "ошибку DLL", найдите имя пакета / модуля / библиотеки / wattelapesca, затем pip uninstall thatPackage и переустановите его

как псевдокод:

notWorking = true
while( nonFunge ){
    run_the_script_from_command_line()
    output = get_last_cmd_output()
    if( "ImportError: DLL load failed: blabla" in output ){
        doomed_package = look_for_package_module_library_wattelapesca(output)
        exec("pip uninstall " + doomed_package )
        exec("pip install " + doomed_package )
    }else # all ok, the script works
         notWorking = false
}
person Marco Ottina    schedule 25.01.2020

Для меня удаление scipy в conda env, а затем переустановка с использованием pip работает.

Удалить: conda remove --force scipy

Установить: pip install scipy

person user13266199    schedule 09.04.2020

Отсутствие DLL может произойти по целому ряду причин. В вашем случае кажется, что существует несоответствие между sklearn и его зависимостями (возможно, другая 32-битная или 64-битная установка пакетов.). Поскольку разные ответы указывают на разные пакеты, общий способ узнать зависимости использует:

pip show scikit-learn

и вывод:

Имя: scikit-learn

Версия: 0.23.1

Описание: набор модулей Python для машинного обучения и интеллектуального анализа данных.

Домашняя страница: http://scikit-learn.org

Автор: Нет

Электронная почта автора: Нет

Лицензия: новая BSD

Расположение: c: \ users \ username \ appdata \ local \ programs \ python \ python37 \ lib \ site- packages

Требуется: joblib, numpy, threadpoolctl, scipy

Так что вполне вероятно, что основная проблема возвращается в один из пакетов «Требуется». Между прочим, строки ошибок также могут указать, какой пакет вызывает ошибку. Попробуйте переустановить эти пакеты, чтобы решить проблему.

person Sajad.sni    schedule 15.06.2020