ImportError при импорте из sklearn: невозможно импортировать имя check_build

117

Я получаю следующую ошибку при попытке импорта из sklearn:

>>> from sklearn import svm

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
   from sklearn import svm
  File "C:\Python27\lib\site-packages\sklearn\__init__.py", line 16, in <module>
   from . import check_build
ImportError: cannot import name check_build

Я использую python 2.7, суперпак scipy-0.12.0b1, суперпак numpy-1.6.0, scikit-learn-0.11 У меня есть машина с Windows 7

Я проверил несколько ответов на эту проблему, но ни один из них не дает выхода из этой ошибки.

Аюш Сингхал
источник
Попробуйте обновить scikit-learn до текущей версии (0.13).
Адрианп 07
теперь я получаю следующую ошибку
ayush singhal 07
ImportError: невозможно импортировать имя __check_build вместо check_build
Аюш Сингхал
Я обновился до scikit 0.13
ayush singhal
Есть ли у кого-нибудь решение моей проблемы?
Аюш Сингхал 07

Ответы:

151

Сработало у меня после установки scipy.

Саван
источник
25
Плюс перезапуск оболочки Python. :)
Mannu
1
Проверьте, есть ли в той же папке файл с именем "sklearn". Попробуйте запустить из другой папки. Решил это за меня (моя вина). Найдите файл с <ls | grep -i "sklearn">
Punnerud 03
@ Манну Да; Также для меня на ноутбуке jupyter просто перезапуск (выключение и повторное открытие), что ipynb py-kernel работал без перезапуска всего ноутбука jupyter.
Абхиману Кумар
scipy.statsтоже не сработало и возникла ошибка. В моем случае у меня был файл, названный multiprocessing.pyв том же каталоге, который каким-то образом конфликтовал с подключением к сокету ядра. Исправлено переименованием файла multiprocessing_.py(не работало начальное подчеркивание).
pylang
47
>>> from sklearn import preprocessing, metrics, cross_validation

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    from sklearn import preprocessing, metrics, cross_validation
  File "D:\Python27\lib\site-packages\sklearn\__init__.py", line 31, in <module>
    from . import __check_build
ImportError: cannot import name __check_build
>>> ================================ RESTART ================================
>>> from sklearn import preprocessing, metrics, cross_validation
>>> 

Итак, просто попробуйте перезапустить оболочку!

Гурупад Хегде
источник
13
Подобные магические ответы бесполезны, потому что не решают проблему. Что, если перезапуск не поможет?
Iceedwater
3
Просто упомяну, что это случилось со мной с scikit-learn 0.15.2, скомпилированным против numpy 1.9 и python 2.7.
alexbw
2
Если вы не хотите перезагружать, del sys.modules['sklearn.__check_build']; import sklearnтоже сработает
Джаред Форсайт
15

Мое решение для 64-разрядной версии Python 3.6.5 Windows 10:

  1. pip uninstall sklearn
  2. pip uninstall scikit-learn
  3. pip install sklearn

Не нужно перезапускать командную строку, но вы можете сделать это, если хотите. Мне потребовался один день, чтобы исправить эту ошибку. Надеюсь на эту помощь.

Loitd
источник
1
Если вы по сути говорите, что последняя версия sklearn исправляет ошибку, было бы полезно указать номера версий sklearn, до которых вы обновляетесь. Спасибо.
rwp 06
Это сработало. Спасибо.
nk Abram
8

После установки numpy, scipy, по- sklearn прежнему имеет ошибку

Решение:

Настройка системной Pathпеременной для Python и PYTHONPATHпеременной среды

Системные переменные: добавить C:\Python34в путь Пользовательские переменные: добавить новые: (имя) PYTHONPATH(значение)C:\Python34\Lib\site-packages;

user3236650
источник
перейдите в C: \ Python34 \ Lib \ site-packages \ sklearn. Дважды щелкните init .py и setup.py.
user3236650
5

Обычно, когда я получаю такие ошибки, __init__.pyпомогает открытие файла и поиск в нем. Перейдите в каталог C:\Python27\lib\site-packages\sklearnи убедитесь, что __check_buildв качестве первого шага есть подкаталог . На моем компьютере (с работающей установкой sklearn, Mac OSX, Python 2.7.3) у меня есть __init__.py, setup.pyсвязанные с ними .pycфайлы и двоичный_check_build.so .

Пробираясь __init__.pyв этом каталоге, следующий шаг, который я бы сделал, - это перейти к sklearn/__init__.pyоператору импорта и закомментировать его - материал check_build просто проверяет, что все было скомпилировано правильно, он, похоже, ничего не делает, кроме вызова предварительно скомпилированного двоичный файл. Это, конечно, на ваш страх и риск и (конечно) обходной путь. Если ваша сборка не удалась, вы, скорее всего, скоро столкнетесь с другими, более серьезными проблемами.

BenDundee
источник
У меня нет _check_build.so в папке, что я могу сделать, чтобы получить это для python 2.7
ayush singhal
Вы пытались закомментировать строку, которая пытается импортировать ее sklearn/__init__.py?
BenDundee
2
На данный момент вы можете закомментировать строку, которая выполняет импорт, что должно заставить вас работать. Не могли бы вы тогда открыть проблему в системе отслеживания проблем, github.com/scikit-learn/scikit-learn/issues выглядит как ошибка.
Андреас Мюллер
2
FWIW Комментирование importin __init__.pyне устранило проблему, но обнаружило другую ошибку - моя scipy установка не удалась. Ошибка в вопросе маскировала реальную проблему
Basic
3

У меня возникли проблемы с импортом SKLEARN после установки новой 64-битной версии Python 3.4 с python.org.

Оказалось, что это был модуль SCIPY, который был сломан, и все не удалось, когда я попытался «импортировать scipy».

Решением было удалить scipy и переустановить его с помощью pip3:

C:\> pip uninstall scipy

[lots of reporting messages deleted]

Proceed (y/n)? y
  Successfully uninstalled scipy-1.0.0

C:\Users\>pip3 install scipy

Collecting scipy
  Downloading scipy-1.0.0-cp36-none-win_amd64.whl (30.8MB)
    100% |████████████████████████████████| 30.8MB 33kB/s
Requirement already satisfied: numpy>=1.8.2 in c:\users\johnmccurdy\appdata\loca
l\programs\python\python36\lib\site-packages (from scipy)
Installing collected packages: scipy
Successfully installed scipy-1.0.0

C:\Users>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
 on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>>
>>> import sklearn
>>>
Джон МакКарди
источник
2

Если вы используете 64-разрядную версию Anaconda 2.7, попробуйте

conda upgrade scikit-learn

и перезапустите оболочку python, которая работает для меня.

Второе редактирование, когда я столкнулся с той же проблемой и решил ее:

conda upgrade scikit-learn

также работает для меня

Statham
источник
1

Ни один из других ответов не помог мне. Немного повозившись, я удалил sklearn:

pip uninstall sklearn

Затем я удалил отсюда папку sklearn: (измените путь к вашей системе и версии python)

C:\Users\%USERNAME%\AppData\Roaming\Python\Python36\site-packages

И установил его с руля с этого сайта: ссылка

Ошибка возникла, вероятно, из-за конфликта версий с установленным где-то еще sklearn.

chross
источник
1

Для меня я обновлял существующий код до новой установки, устанавливая Anaconda из свежего с последней версией python (3.7). Для этого

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

в

from sklearn.model_selection import GridSearchCV,cross_validate
Сиддарам Х
источник
1

не нужно удалять, а затем повторно устанавливать sklearn

попробуй это:

from sklearn.model_selection import train_test_split
Катрине
источник
0

У меня была такая же проблема, переустановка анаконды решила проблему для меня

Мубашар Назар
источник
-1

В окнах:

Я попытался удалить sklearn из оболочки: pip uninstall sklearn и повторно установить его, но не работает ..

решение:

1- open the cmd shell.
2- cd c:\pythonVERSION\scripts
3- pip uninstall sklearn
4- open in the explorer: C:\pythonVERSION\Lib\site-packages
5- look for the folders that contains sklearn and delete them ..
6- back to cmd: pip install sklearn
Гханем
источник