ImportError durante l'importazione da sklearn: impossibile importare il nome check_build


117

Ricevo il seguente errore durante il tentativo di importazione da 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

Sto usando python 2.7, scipy-0.12.0b1 superpack, numpy-1.6.0 superpack, scikit-learn-0.11 Ho una macchina Windows 7

Ho controllato diverse risposte per questo problema, ma nessuna di esse fornisce una via d'uscita da questo errore.


Prova ad aggiornare scikit-learn alla versione corrente (0.13).
adrianp

ora ricevo il seguente errore
ayush singhal

ImportError: impossibile importare il nome __check_build invece di check_build
ayush singhal

Ho aggiornato a scikit 0.13
ayush singhal

Qualcuno ha una soluzione al mio problema?
ayush singhal

Risposte:


151

Ha funzionato per me dopo aver installato scipy.


25
Inoltre riavviare la shell di Python. :)
Mannu

1
Controlla se c'è un file chiamato "sklearn" nella stessa cartella. Prova a eseguire da una cartella diversa. Risolto per me (colpa mia). Trova file con <ls | grep -i "sklearn">
Punnerud

@Mannu Sì; Anche per me su jupyter notebook, solo riavviando (spegnendo e facendo nuovamente clic su apri) quell'ipynb py-kernel ha funzionato senza riavviare tutto il notebook jupyter.
Abhimanu Kumar

scipy.statsinoltre non ha funzionato ha anche generato un errore. Nel mio caso, avevo un file chiamato multiprocessing.pynella stessa directory che in qualche modo era in conflitto con la connessione socket del kernel. Risolto il problema rinominando il file multiprocessing_.py(il trattino basso iniziale non funzionava).
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
>>> 

Quindi, prova semplicemente a riavviare la shell!


13
Risposte magiche come questa non sono molto utili perché non risolvono il problema. Cosa succede se un riavvio non lo risolve?
icedwater

3
Menzionando solo che questo è successo a me con scikit-learn 0.15.2 compilato contro numpy 1.9 e python 2.7.
alexbw

2
Se non vuoi riavviare, del sys.modules['sklearn.__check_build']; import sklearnfunzionerà anche
Jared Forsyth

15

La mia soluzione per Python 3.6.5 a 64 bit Windows 10:

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

Non è necessario riavviare la riga di comando ma puoi farlo se lo desideri. Mi ci è voluto un giorno per correggere questo bug. Spero che questo aiuto.


1
Se essenzialmente stai dicendo che l'ultima versione di sklearn corregge il bug, sarebbe utile indicare a quali numeri di versione di sklearn esegui l'aggiornamento. Grazie.
rwp

Questo ha funzionato. Grazie.
nk abram il

8

Dopo l'installazione numpy, scipy,sklearn ha ancora l'errore

Soluzione:

Configurazione della Pathvariabile di sistema per Python ePYTHONPATH variabile d'ambiente

Variabili di sistema: aggiungi C:\Python34nel percorso Variabili utente: aggiungi nuovo: (nome) PYTHONPATH(valore)C:\Python34\Lib\site-packages;


vai a C: \ Python34 \ Lib \ site-packages \ sklearn Fai doppio clic su init .py e setup.py.
user3236650

5

Di solito quando ricevo questo tipo di errori, l'apertura del __init__.pyfile e il frugare aiutano. Vai alla directory C:\Python27\lib\site-packages\sklearne assicurati che ci sia una sottodirectory chiamata __check_buildcome primo passaggio. Sulla mia macchina (con un'installazione sklearn funzionante, Mac OSX, Python 2.7.3) ho__init__.py , setup.py, i loro associati .pyci file, e un binario _check_build.so.

Rovistando __init__.pyin quella directory, il prossimo passo che farei è andare a sklearn/__init__.pycommentare l'istruzione import --- la roba check_build controlla solo che le cose siano state compilate correttamente, non sembra fare altro che chiamare un precompilato binario. Questo è, ovviamente, a proprio rischio e (per essere sicuri) un aggiramento. Se la tua build fallisce, probabilmente ti imbatterai presto in altri problemi più grandi.


Non ho _check_build.so nella cartella, cosa posso fare per ottenerlo per Python 2.7
ayush singhal

Hai provato a commentare la riga che tenta di importarlo sklearn/__init__.py?
BenDundee

2
Per il momento, puoi commentare la riga che esegue l'importazione, che dovrebbe farti funzionare. Puoi quindi aprire un problema nel tracker dei problemi github.com/scikit-learn/scikit-learn/issues sembra un bug.
Andreas Mueller

2
FWIW Commentando in importin __init__.pynon ha risolto il problema ma ha mostrato un errore diverso: la mia installazione di scipy non era riuscita. L'errore nella domanda stava mascherando il vero problema
Basic


3

Ho avuto problemi con l'importazione di SKLEARN dopo aver installato una nuova versione a 64 bit di Python 3.4 da python.org.

Si scopre che era il modulo SCIPY che era rotto, e anche se non è riuscito quando ho provato a "importare scipy".

La soluzione era disinstallare scipy e reinstallarlo con 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

Se usi Anaconda 2.7 64 bit, prova

conda upgrade scikit-learn

e riavvia la shell python, che funziona per me.

Seconda modifica quando ho affrontato lo stesso problema e l'ho risolto:

conda upgrade scikit-learn

funziona anche per me


1

Nessuna delle altre risposte ha funzionato per me. Dopo alcuni ritocchi ho disinstallato sklearn:

pip uninstall sklearn

Quindi ho rimosso la cartella sklearn da qui: (regola il percorso del tuo sistema e della versione python)

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

E l'ho installato dalla ruota da questo sito: link

L'errore era presente probabilmente a causa di un conflitto di versione con sklearn installato da qualche altra parte.


1

Per me, stavo aggiornando il codice esistente in una nuova configurazione installando Anaconda da fresco con l'ultima versione di python (3.7) Per questo,

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

per

from sklearn.model_selection import GridSearchCV,cross_validate

1

non è necessario disinstallare e reinstallare sklearn

prova questo:

from sklearn.model_selection import train_test_split

0

ho avuto lo stesso problema reinstallare anaconda ha risolto il problema per me


-1

In Windows:

Ho provato a eliminare sklearn dalla shell: pip disinstalla sklearn e reinstallalo ma non funziona ..

la soluzione:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.