ImportError na importação de sklearn: não é possível importar o nome check_build

117

Estou recebendo o seguinte erro ao tentar importar do 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

Estou usando o python 2.7, scipy-0.12.0b1 superpack, numpy-1.6.0 superpack, scikit-learn-0.11. Tenho uma máquina com Windows 7

Verifiquei várias respostas para esse problema, mas nenhuma delas fornece uma saída para esse erro.

Ayush Singhal
fonte
Tente atualizar o scikit-learn para a versão atual (0.13).
Adrianp
agora estou recebendo o seguinte erro
ayush singhal
ImportError: não é possível importar o nome __check_build em vez de check_build
ayush singhal
Eu atualizei para o scikit 0.13
ayush singhal
Alguém tem uma solução para o meu problema?
ayush singhal

Respostas:

151

Funcionou para mim depois de instalar o scipy.

Sawan
fonte
25
Além de reiniciar o shell do python. :)
Mannu
1
Verifique se existe um arquivo chamado "sklearn" na mesma pasta. Tente executar de uma pasta diferente. Resolvido para mim (minha culpa). Encontre o arquivo com <ls | grep -i "sklearn">
Punnerud,
@Mannu Sim; Também para mim no notebook jupyter, apenas reiniciando (desligando e clicando para abrir novamente) que o ipynb py-kernel funcionou sem reiniciar todo o notebook jupyter.
Abhimanu Kumar
scipy.statstambém não funcionou também levantou um erro. No meu caso, eu tinha um arquivo chamado multiprocessing.pyno mesmo diretório que de alguma forma entrou em conflito com a conexão de soquete do kernel. Corrigido renomeando o arquivo multiprocessing_.py(o sublinhado inicial não funcionava).
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
>>> 

Então, simplesmente tente reiniciar o shell!

Gurupad Hegde
fonte
13
Respostas mágicas como essa não ajudam muito porque não resolvem o problema. E se uma reinicialização não corrigir isso?
icedwater
3
Apenas mencionando que isso aconteceu comigo com o scikit-learn 0.15.2 compilado com o numpy 1.9 e o python 2.7.
alexbw
2
Se você não quiser reiniciar, del sys.modules['sklearn.__check_build']; import sklearntambém funcionará
Jared Forsyth
15

Minha solução para Python 3.6.5 Windows 10 de 64 bits:

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

Não há necessidade de reiniciar a linha de comando, mas você pode fazer isso se quiser. Levei um dia para consertar esse bug. Espero que esta ajuda.

Loitd
fonte
1
Se você está essencialmente dizendo que a versão mais recente do sklearn corrige o bug, seria útil indicar para quais números de versão do sklearn você atualizou. Obrigado.
rwp
Isso funcionou. Obrigado.
nk abram
8

Depois de instalar numpy, scipy, sklearn ainda tem erro

Solução:

Configurando a Pathvariável do sistema para Python e a PYTHONPATHvariável de ambiente

Variáveis ​​do sistema: adicionar C:\Python34no caminho Variáveis ​​do usuário: adicionar novo: (nome) PYTHONPATH(valor)C:\Python34\Lib\site-packages;

user3236650
fonte
vá para C: \ Python34 \ Lib \ site-packages \ sklearn Clique duas vezes em init .py e setup.py.
user3236650
5

Normalmente, quando recebo esse tipo de erro, abrir o __init__.pyarquivo e vasculhar ajuda. Vá para o diretório C:\Python27\lib\site-packages\sklearne certifique-se de que existe um subdiretório chamado __check_buildcomo primeira etapa. Na minha máquina (com uma instalação funcional sklearn, Mac OSX, Python 2.7.3) eu tenho __init__.py, setup.py, seus associados .pycarquivos, e um binário _check_build.so.

Pesquisando __init__.pynesse diretório, o próximo passo que eu daria é ir sklearn/__init__.pye comentar a instrução de importação --- o check_build apenas verifica se as coisas foram compiladas corretamente, ele não parece fazer nada além de chamar um pré-compilado binário. Isso, é claro, é por sua própria conta e risco e (com certeza) uma solução alternativa. Se sua construção falhar, você provavelmente encontrará outros problemas maiores.

BenDundee
fonte
Não tenho _check_build.so na pasta, O que posso fazer para obter isso para python 2.7
ayush singhal
Você tentou comentar a linha que tenta importá-lo sklearn/__init__.py?
BenDundee
2
No momento, você pode comentar a linha que faz a importação, o que deve colocá-lo em execução. Você pode então abrir um problema no rastreador de problemas github.com/scikit-learn/scikit-learn/issues parece um bug.
Andreas Mueller,
2
FWIW Comentar o importin __init__.pynão corrigiu o problema, mas expôs um erro diferente - minha instalação do scipy não foi bem-sucedida. O erro na pergunta estava mascarando o problema real
Básico
3

Tive problemas ao importar o SKLEARN depois de instalar uma nova versão de 64 bits do Python 3.4 de python.org.

Acontece que era o módulo SCIPY que estava quebrado e também falhou quando tentei "importar o scipy".

A solução foi desinstalar o scipy e reinstalá-lo com 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
fonte
2

Se você usa o Anaconda 2.7 64 bits, tente

conda upgrade scikit-learn

e reinicie o shell python, que funciona para mim.

Segunda edição quando enfrentei o mesmo problema e resolvi:

conda upgrade scikit-learn

também funciona para mim

Statham
fonte
1

Nenhuma das outras respostas funcionou para mim. Depois de alguns ajustes, eu desinstalei o sklearn:

pip uninstall sklearn

Então eu removi a pasta sklearn daqui: (ajuste o caminho para o seu sistema e versão python)

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

E o instalei da roda deste site: link

O erro ocorreu provavelmente devido a um conflito de versão com o sklearn instalado em outro lugar.

chross
fonte
1

Para mim, eu estava atualizando o código existente para uma nova configuração, instalando o Anaconda do zero com a versão mais recente do python (3.7). Para isso,

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

para

from sklearn.model_selection import GridSearchCV,cross_validate
Siddaram H
fonte
1

não há necessidade de desinstalar e reinstalar o sklearn

tente isto:

from sklearn.model_selection import train_test_split
Cathrine
fonte
0

Eu tive o mesmo problema ao reinstalar o anaconda, resolveu o problema para mim

Mubashar Nazar
fonte
-1

No Windows:

Tentei excluir sklearn do shell: pip uninstall sklearn e reinstalá-lo, mas não funcionou.

a solução:

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
fonte