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.


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.


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


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.


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;


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.


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

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


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.


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

1

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

Spróbuj tego:

from sklearn.model_selection import train_test_split


-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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.