ImportError podczas importowania ze sklearn: nie można zaimportować nazwy check_build

117

Podczas próby importu ze sklearn pojawia się następujący błąd:

>>> 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

Używam pythona 2.7, scipy-0.12.0b1 superpack, numpy-1.6.0 superpack, scikit-learn-0.11 Mam maszynę z systemem Windows 7

Sprawdziłem kilka odpowiedzi na ten problem, ale żadna z nich nie daje wyjścia z tego błędu.

ayush singhal
źródło
Spróbuj zaktualizować scikit-learn do aktualnej wersji (0.13).
adrianp
teraz otrzymuję następujący błąd
ayush singhal
ImportError: nie można zaimportować nazwy __check_build zamiast check_build
ayush singhal
Zrobiłem aktualizację do scikita 0.13
ayush singhal
Czy ktoś ma rozwiązanie mojego problemu?
ayush singhal

Odpowiedzi:

151

Pracował dla mnie po zainstalowaniu scipy.

Sawan
źródło
25
Plus ponowne uruchomienie powłoki Pythona. :)
Mannu
1
Sprawdź, czy w tym samym folderze znajduje się plik o nazwie „sklearn”. Spróbuj uruchomić z innego folderu. Rozwiązałem to za mnie (moja wina). Znajdź plik z <ls | grep -i "sklearn">
Punnerud
@Mannu Yes; Również dla mnie na notebooku jupyter, po ponownym uruchomieniu (zamknięciu i ponownym kliknięciu), że ipynb py-kernel działało bez ponownego uruchamiania całego notebooka jupyter.
Abhimanu Kumar
scipy.statsrównież nie zadziałał również podniósł błąd. W moim przypadku miałem plik o nazwie multiprocessing.pyw tym samym katalogu, który w jakiś sposób był w konflikcie z połączeniem gniazda jądra. Naprawiono przez zmianę nazwy pliku multiprocessing_.py(początkowe podkreślenie nie działało).
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
>>> 

Więc po prostu spróbuj ponownie uruchomić powłokę!

Gurupad Hegde
źródło
13
Takie magiczne odpowiedzi nie są zbyt pomocne, ponieważ nie rozwiązują problemu. Co się stanie, jeśli ponowne uruchomienie tego nie rozwiąże?
icedwater
3
Wspomnę tylko, że zdarzyło mi się to w przypadku scikit-learn 0.15.2 skompilowanej z numpy 1.9 i pythonem 2.7.
alexbw
2
Jeśli nie chcesz restartować, del sys.modules['sklearn.__check_build']; import sklearnrównież zadziała
Jared Forsyth
15

Moje rozwiązanie dla 64-bitowego systemu Windows 10 w Pythonie 3.6.5:

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

Nie ma potrzeby ponownego uruchamiania wiersza poleceń, ale możesz to zrobić, jeśli chcesz. Naprawienie tego błędu zajęło mi jeden dzień. Mam nadzieję, że to pomoże.

Loitd
źródło
1
Jeśli zasadniczo mówisz, że najnowsza wersja sklearn naprawia błąd, pomocne byłoby określenie, do której wersji sklearn aktualizujesz. Dzięki.
rwp
To zadziałało. Dziękuję Ci.
nk Abram
8

Po zainstalowaniu numpy, scipy, sklearn wciąż ma błąd

Rozwiązanie:

Konfigurowanie Pathzmiennej systemowej dla języka Python i PYTHONPATHzmiennej środowiskowej

Zmienne systemowe: dodaj C:\Python34do ścieżki Zmienne użytkownika: dodaj nowe: (nazwa) PYTHONPATH(wartość)C:\Python34\Lib\site-packages;

user3236650
źródło
przejdź do C: \ Python34 \ Lib \ site-packages \ sklearn Kliknij dwukrotnie init .py i setup.py.
user3236650
5

Zwykle, gdy dostaję tego rodzaju błędy, __init__.pypomaga otwieranie pliku i grzebanie w nim. Przejdź do katalogu C:\Python27\lib\site-packages\sklearni upewnij się, że __check_buildjako pierwszy krok jest podany podkatalog . Na moim komputerze (z instalacji pracujących sklearn, Mac OSX, Python 2.7.3) Mam __init__.py, setup.pyich skojarzone .pycpliki, a binarnym _check_build.so.

Przeglądając __init__.pykatalog w tym katalogu, następnym krokiem jest przejście do sklearn/__init__.pyinstrukcji importowania i zakomentowanie jej - funkcja check_build sprawdza tylko, czy rzeczy zostały poprawnie skompilowane, wydaje się, że nie robi nic poza wywołaniem prekompilowanej dwójkowy. Robisz to oczywiście na własne ryzyko i (dla pewności) można obejść ten problem. Jeśli twoja kompilacja się nie powiedzie, prawdopodobnie wkrótce napotkasz inne, większe problemy.

BenDundee
źródło
Nie mam _check_build.so w folderze, co mogę zrobić, aby uzyskać to dla Pythona 2.7
ayush singhal
Czy próbowałeś skomentować wiersz, który próbuje go zaimportować sklearn/__init__.py?
BenDundee,
2
W tej chwili możesz zakomentować linię, która importuje, co powinno Cię uruchomić. Czy możesz więc otworzyć problem w narzędziu do śledzenia problemów github.com/scikit-learn/scikit-learn/issues, który wygląda jak błąd.
Andreas Mueller,
2
FWIW Komentowanie importin __init__.pynie rozwiązało problemu, ale ujawniło inny błąd - moja instalacja Scipy nie powiodła się. Błąd w pytaniu maskował prawdziwy problem
Basic
3

Miałem problemy z importowaniem SKLEARN po zainstalowaniu nowej 64-bitowej wersji Pythona 3.4 z python.org.

Okazuje się, że to moduł SCIPY był zepsuty i alos zawiódł, gdy próbowałem „zaimportować scipy”.

Rozwiązaniem było odinstalowanie Scipy i ponowne zainstalowanie go za pomocą 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
>>>
John McCurdy
źródło
2

Jeśli używasz 64-bitowego programu Anaconda 2.7, spróbuj

conda upgrade scikit-learn

i zrestartuj powłokę Pythona, która działa dla mnie.

Druga edycja, kiedy napotkałem ten sam problem i rozwiązałem go:

conda upgrade scikit-learn

działa również dla mnie

Statham
źródło
1

Żadna z pozostałych odpowiedzi nie działała dla mnie. Po kilku majsterkowaniu odinstalowałem sklearn:

pip uninstall sklearn

Następnie usunąłem stąd folder sklearn: (dostosuj ścieżkę do twojego systemu i wersji Pythona)

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

I zainstalowałem go z koła z tej strony: link

Błąd wystąpił prawdopodobnie z powodu konfliktu wersji ze sklearn zainstalowanym gdzie indziej.

chross
źródło
1

Dla mnie aktualizowałem istniejący kod do nowej konfiguracji, instalując Anacondę ze świeżego z najnowszą wersją Pythona (3.7) W tym celu

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

do

from sklearn.model_selection import GridSearchCV,cross_validate
Siddaram H.
źródło
1

nie trzeba odinstalowywać, a następnie ponownie instalować sklearn

Spróbuj tego:

from sklearn.model_selection import train_test_split
Cathrine
źródło
0

Miałem ten sam problem, ponowna instalacja anakondy rozwiązała problem

Mubashar Nazar
źródło
-1

W oknach:

Próbowałem usunąć sklearn z powłoki: pip odinstaluj sklearn i zainstaluj go ponownie, ale nie działa.

rozwiązanie:

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
Ghanem
źródło