ImportError lors de l'importation depuis sklearn: impossible d'importer le nom check_build


117

J'obtiens l'erreur suivante en essayant d'importer depuis 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

J'utilise python 2.7, scipy-0.12.0b1 superpack, numpy-1.6.0 superpack, scikit-learn-0.11 J'ai une machine Windows 7

J'ai vérifié plusieurs réponses à ce problème, mais aucune d'elles ne permet de sortir de cette erreur.


Essayez de mettre à jour scikit-learn vers la version actuelle (0.13).
adrianp

maintenant, je reçois l'erreur suivante
ayush singhal

ImportError: impossible d'importer le nom __check_build au lieu de check_build
ayush singhal

J'ai mis à jour vers scikit 0.13
ayush singhal

Quelqu'un a-t-il une solution à mon problème?
ayush singhal

Réponses:


151

A travaillé pour moi après l'installation de scipy.


25
De plus, le redémarrage du shell python. :)
Mannu

1
Vérifiez s'il existe un fichier appelé "sklearn" dans le même dossier. Essayez d'exécuter à partir d'un autre dossier. Résolu pour moi (ma faute). Rechercher un fichier avec <ls | grep -i "sklearn">
Punnerud

@Mannu Oui; Aussi pour moi sur le notebook jupyter, il suffit de redémarrer (arrêter et cliquer à nouveau) que ipynb py-kernel fonctionnait sans redémarrer tout le notebook jupyter.
Abhimanu Kumar

scipy.statségalement n'a pas fonctionné a également soulevé une erreur. Dans mon cas, j'avais un fichier appelé multiprocessing.pydans le même répertoire qui était en quelque sorte en conflit avec la connexion socket du noyau. Correction en renommant le fichier multiprocessing_.py(le trait de soulignement principal ne fonctionnait pas).
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
>>> 

Alors, essayez simplement de redémarrer le shell!


13
Des réponses magiques comme celle-ci ne sont pas vraiment utiles car elles ne résolvent pas le problème. Et si un redémarrage ne résout pas le problème?
icedwater

3
En mentionnant simplement que cela m'est arrivé avec scikit-learn 0.15.2 compilé avec numpy 1.9 et python 2.7.
alexbw

2
Si vous ne voulez pas redémarrer, del sys.modules['sklearn.__check_build']; import sklearnfonctionnera également
Jared Forsyth

15

Ma solution pour Python 3.6.5 64 bits Windows 10:

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

Pas besoin de redémarrer la ligne de commande mais vous pouvez le faire si vous le souhaitez. Il m'a fallu un jour pour corriger ce bug. J'espère que cette aide.


1
Si vous dites essentiellement que la dernière version de sklearn corrige le bogue, il serait utile d'indiquer les numéros de version de sklearn vers lesquels vous mettez à niveau. Merci.
rwp

Cela a fonctionné. Je vous remercie.
nk abram

8

Après l' installation numpy, scipy, sklearn a encore erreur

Solution:

Configuration de la Pathvariable système pour Python et la PYTHONPATHvariable d'environnement

Variables système: ajouter C:\Python34dans le chemin Variables utilisateur: ajouter nouveau: (nom) PYTHONPATH(valeur)C:\Python34\Lib\site-packages;


allez dans C: \ Python34 \ Lib \ site-packages \ sklearn Double-cliquez sur init .py et setup.py.
user3236650

5

Habituellement, lorsque j'obtiens ce genre d'erreurs, ouvrir le __init__.pyfichier et fouiller aide. Accédez au répertoire C:\Python27\lib\site-packages\sklearnet assurez-vous qu'il existe un sous-répertoire appelé __check_builddans un premier temps. Sur ma machine (avec une installation sklearn de travail, Mac OS X, Python 2.7.3) Je __init__.py, setup.py, leurs associés .pycfichiers, et un binaire _check_build.so.

En poussant __init__.pydans ce répertoire, la prochaine étape que je prendrais est d'aller sklearn/__init__.pyet de commenter l'instruction d'importation --- le truc check_build vérifie simplement que les choses ont été compilées correctement, il ne semble pas faire autre chose que d'appeler un précompilé binaire. C'est, bien sûr, à vos risques et périls, et (bien sûr) un contournement. Si votre build échoue, vous rencontrerez probablement bientôt d'autres problèmes plus importants.


Je n'ai pas _check_build.so dans le dossier, que puis-je faire pour obtenir ceci pour python 2.7
ayush singhal

Avez-vous essayé de commenter la ligne qui tente de l'importer sklearn/__init__.py?
BenDundee

2
Pour le moment, vous pouvez commenter la ligne qui effectue l'importation, qui devrait vous permettre de démarrer. Pouvez-vous alors s'il vous plaît ouvrir un problème dans le suivi des problèmes github.com/scikit-learn/scikit-learn/issues ressemble à un bogue.
Andreas Mueller

2
FWIW Commenter le importin __init__.pyn'a pas résolu le problème mais a révélé une erreur différente - mon installation scipy n'avait pas réussi. L'erreur dans la question masquait le vrai problème
Basic


3

J'ai eu des problèmes pour importer SKLEARN après avoir installé une nouvelle version 64 bits de Python 3.4 à partir de python.org.

Il s'avère que c'était le module SCIPY qui était cassé, et a également échoué quand j'ai essayé "d'importer scipy".

La solution consistait à désinstaller scipy et à le réinstaller avec 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

Si vous utilisez Anaconda 2.7 64 bits, essayez

conda upgrade scikit-learn

et redémarrez le shell python, cela fonctionne pour moi.

Deuxième modification lorsque j'ai rencontré le même problème et que je l'ai résolu:

conda upgrade scikit-learn

fonctionne aussi pour moi


1

Aucune des autres réponses n'a fonctionné pour moi. Après quelques bricolages, j'ai désinstallé sklearn:

pip uninstall sklearn

Ensuite, j'ai supprimé le dossier sklearn d'ici: (ajustez le chemin vers votre système et la version python)

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

Et l'a installé à partir de la roue de ce site: lien

L'erreur était probablement due à un conflit de version avec sklearn installé ailleurs.


1

Pour moi, je mettais à niveau le code existant dans une nouvelle configuration en installant Anaconda à partir de la dernière version de python (3.7) Pour cela,

from sklearn import cross_validation, 
from sklearn.grid_search import GridSearchCV

à

from sklearn.model_selection import GridSearchCV,cross_validate

1

pas besoin de désinstaller puis de réinstaller sklearn

essaye ça:

from sklearn.model_selection import train_test_split

0

J'ai eu le même problème en réinstallant anaconda a résolu le problème pour moi


-1

Dans Windows:

J'ai essayé de supprimer sklearn du shell: pip désinstaller sklearn, et le réinstaller mais ne fonctionne pas.

la solution:

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.