ImportError al importar desde sklearn: no se puede importar el nombre check_build

117

Recibo el siguiente error al intentar importar desde 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

Estoy usando Python 2.7, scipy-0.12.0b1 superpack, numpy-1.6.0 superpack, scikit-learn-0.11 Tengo una máquina con Windows 7

He comprobado varias respuestas para este problema, pero ninguna de ellas da una salida a este error.

ayush singhal
fuente
Intente actualizar scikit-learn a la versión actual (0.13).
Adrianp
ahora recibo el siguiente error
ayush singhal
ImportError: no se puede importar el nombre __check_build en lugar de check_build
ayush singhal
Actualicé a scikit 0.13
ayush singhal
¿Alguien tiene una solución a mi problema?
ayush singhal

Respuestas:

151

Me funcionó después de instalar scipy.

Sawan
fuente
25
Además de reiniciar el shell de Python. :)
Mannu
1
Compruebe si hay un archivo llamado "sklearn" en la misma carpeta. Intente ejecutar desde una carpeta diferente. Me lo resolvió (culpa mía). Buscar archivo con <ls | grep -i "sklearn">
Punnerud
@Mannu Sí; También para mí en el portátil jupyter, simplemente reiniciando (apagando y haciendo clic para abrir nuevamente) que ipynb py-kernel funcionó sin reiniciar todo el portátil jupyter.
Abhimanu Kumar
scipy.statstampoco funcionó también generó un error. En mi caso, tuve un archivo llamado multiprocessing.pyen el mismo directorio que de alguna manera entró en conflicto con la conexión del socket del kernel. Se corrigió cambiando el nombre del archivo multiprocessing_.py(el subrayado inicial no funcionaba).
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
>>> 

Entonces, ¡simplemente intente reiniciar el shell!

Gurupad Hegde
fuente
13
Las respuestas mágicas como esta no son realmente útiles porque no resuelven el problema. ¿Qué pasa si un reinicio no lo soluciona?
agua helada
3
Solo menciono que esto me sucedió con scikit-learn 0.15.2 compilado contra numpy 1.9 y python 2.7.
alexbw
2
Si no desea reiniciar, del sys.modules['sklearn.__check_build']; import sklearntambién funcionará
Jared Forsyth
15

Mi solución para Python 3.6.5 Windows 10 de 64 bits:

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

No es necesario reiniciar la línea de comandos, pero puede hacerlo si lo desea. Me tomó un día arreglar este error. Espero que esto ayude.

Loitd
fuente
1
Si esencialmente está diciendo que la última versión de sklearn corrige el error, sería útil indicar a qué números de versión de sklearn se actualiza. Gracias.
rwp
Esto funcionó. Gracias.
nk abram
8

Después de instalar numpy, scipy, sklearn todavía tiene error

Solución:

Configuración de la Pathvariable del sistema para Python y la PYTHONPATHvariable de entorno

Variables del sistema: agregar C:\Python34a la ruta Variables de usuario: agregar nuevo: (nombre) PYTHONPATH(valor)C:\Python34\Lib\site-packages;

user3236650
fuente
vaya a C: \ Python34 \ Lib \ site-packages \ sklearn Haga doble clic en init .py y setup.py.
user3236650
5

Por lo general, cuando obtengo este tipo de errores, abrir el __init__.pyarchivo y buscar ayuda. Vaya al directorio C:\Python27\lib\site-packages\sklearny asegúrese de que haya un subdirectorio llamado __check_buildcomo primer paso. En mi máquina (con una instalación de trabajo sklearn, Mac OS X, Python 2.7.3) Tengo __init__.py, setup.py, sus asociados .pycarchivos, y un binario _check_build.so.

Buscando __init__.pyen ese directorio, el siguiente paso que tomaría es ir sklearn/__init__.pyy comentar la declaración de importación --- las cosas check_build solo verifican que las cosas se compilaron correctamente, no parece hacer nada más que llamar a un precompilado binario. Esto es, por supuesto, bajo su propio riesgo y (sin duda) una solución alternativa. Si su compilación falló, es probable que pronto se encuentre con otros problemas mayores.

BenDundee
fuente
No tengo _check_build.so en la carpeta, ¿qué puedo hacer para obtener esto para Python 2.7?
ayush singhal
¿Intentaste comentar la línea que intenta importarlo sklearn/__init__.py?
BenDundee
2
Por el momento, puedes comentar la línea que realiza la importación, que debería ponerte en marcha. ¿Puede entonces abrir un problema en el rastreador de problemas github.com/scikit-learn/scikit-learn/issues parece un error?
Andreas Mueller
2
Fwiw Comentando el importde __init__.pyno solucionar el problema, pero se exponga un error diferente - mi scipy instalación no había tenido éxito. El error en la pregunta ocultaba el problema real
Básico
3

Tuve problemas para importar SKLEARN después de instalar una nueva versión de 64 bits de Python 3.4 de python.org.

Resulta que era el módulo SCIPY el que estaba roto, y también falló cuando intenté "importar scipy".

La solución fue desinstalar scipy y reinstalarlo 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
>>>
John McCurdy
fuente
2

Si usa Anaconda 2.7 de 64 bits, intente

conda upgrade scikit-learn

y reinicie el shell de Python, eso funciona para mí.

Segunda edición cuando enfrenté el mismo problema y lo resolví:

conda upgrade scikit-learn

tambien funciona para mi

Statham
fuente
1

Ninguna de las otras respuestas funcionó para mí. Después de algunos retoques, desinstalé sklearn:

pip uninstall sklearn

Luego eliminé la carpeta sklearn de aquí: (ajuste la ruta a su sistema y la versión de Python)

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

Y lo instalé desde la rueda de este sitio: enlace

El error probablemente se debió a un conflicto de versión con sklearn instalado en otro lugar.

chross
fuente
1

Para mí, estaba actualizando el código existente a una nueva configuración instalando Anaconda desde una versión nueva con la última versión de Python (3.7) Para esto,

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

a

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

no es necesario desinstalar y luego volver a instalar sklearn

prueba esto:

from sklearn.model_selection import train_test_split
Cathrine
fuente
0

Tuve el mismo problema al reinstalar anaconda y me resolvió

Mubashar Nazar
fuente
-1

En ventanas:

Intenté eliminar sklearn del shell: pip desinstalar sklearn y volver a instalarlo, pero no funciona.

la solución:

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
fuente