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

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


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

Это сработало. Спасибо.
nk Abram

8

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

Решение:

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

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


перейдите в 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 просто проверяет, что все было скомпилировано правильно, он, похоже, ничего не делает, кроме вызова предварительно скомпилированного двоичный файл. Это, конечно, на ваш страх и риск и (конечно) обходной путь. Если ваша сборка не удалась, вы, скорее всего, скоро столкнетесь с другими, более серьезными проблемами.


У меня нет _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

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


1

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

pip uninstall sklearn

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

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

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

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


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


-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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.