Scikit-learn: après la mise à jour : ImportError : aucun module nommé model_selection sur l'ordinateur Windows

Créé le 13 janv. 2016  ·  17Commentaires  ·  Source: scikit-learn/scikit-learn

après une mise à jour réussie avec
mise à jour conda scikit-learn
sur ordinateur Windows
à partir de sklearn.model_selection importer GridSearchCV
ou
de sklearn.model_selection importer train_test_split
donne
ImportError : aucun module nommé model_selection
MAIS, scikit-learn a commencé à travailler après la mise à jour seulement après
conda install -f scipy
par
http://stackoverflow.com/questions/31012216/updated-anaconda-why-arent-my-ipython-notebooks-working-anymore
d'ailleurs cet exemple fonctionne bien
http://scikit-learn.org/stable/auto_examples/text/document_classification_20newsgroups.html#example -text-document-classification-20newsgroups-py

Commentaire le plus utile

Le module model_selection ne sera disponible qu'à partir de la prochaine version (0.18). Vous devrez utiliser l'ancien module cross_validation !

Tous les 17 commentaires

Le module model_selection ne sera disponible qu'à partir de la prochaine version (0.18). Vous devrez utiliser l'ancien module cross_validation !

Fermeture car ce n'est pas un bug.

ok, mais pouvez-vous aider à obtenir le code de travail pour le fichier exercice_02_sentiment.py
de http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
comme écrit
La source de ce tutoriel se trouve dans votre dossier scikit-learn :
scikit-learn/doc/tutorial/text_analytics/

vous pouvez télécharger le code à partir du site Web de la doc stable ou consulter la branche 0.17.X dans votre référentiel.

Ce problème a été clos en janvier 2016, mais il est toujours d'actualité (octobre 2016). Solution:

 ## [2016-Oct-19] Environnement virtuel Python 3.5
 (py35) [victoria @victoria ~]$ conda install scikit-learn
 ...
 Les NOUVEAUX packages suivants seront INSTALLÉS :
 scikit-learn : 0.18-np111py35_0
 ...
 (py35) [victoria @victoria ~]$ liste conda | grep scikit
 scikit-learn 0.18 np111py35_0 
 ## Python 3.5 :
 >>> à partir de sklearn.model_selection importer train_test_split
 Traceback (appel le plus récent en dernier) :
 Déposer "", ligne 1, dans
 ImportError : aucun module nommé 'sklearn.model_selection'
 ## coquille:
 $ conda install -f scipy
 ...
 Les NOUVEAUX packages suivants seront INSTALLÉS :
 scipy : 0.18.1-np111py35_0
 ...
 ## Python : même erreur d'import !! Grrrrrr.......
 ## http://scikit-learn.org/stable/install.html
 "Si vous avez déjà une installation fonctionnelle de numpy et scipy, le moyen le plus simple d'installer scikit-learn est d'utiliser pip

 pip install -U scikit-learn

 ou conda :

 conda install scikit-learn"
 $ pip install -U scikit-learn
 Collectionner scikit-learn
 Téléchargement de scikit_learn-0.18-cp35-cp35m-manylinux1_x86_64.whl (11,3 Mo)
 100% |████████████████████████████████| 11,3 Mo 162 Ko/s 
 Installation des packages collectés : scikit-learn
 Installation existante trouvée : scikit-learn 0.17.1
 OBLIGATION : la désinstallation d'un projet installé par distutils (scikit-learn) est obsolète et sera supprimée dans une future version. Cela est dû au fait que la désinstallation d'un projet distutils ne désinstallera que partiellement le projet.
 Désinstallation de scikit-learn-0.17.1 :
 Sckit-learn-0.17.1 désinstallé avec succès
 Scikit-learn-0.18 installé avec succès
 ## Peut MAINTENANT importer avec succès :
 (py35) [victoria @victoria ~]$ P
 [P : python]
 Python 3.5.2 (par défaut, 28 juin 2016, 08:46:01) 
 [GCC 6.1.1 20160602] sur Linux
 Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
 >>> à partir de sklearn.model_selection importer train_test_split
 >>> 
 >>> [Ctrl-D / sortie]
 (py35) [victoria @victoria ~]$ ## :-D

 CQFD

hmm, je ne semble pas avoir le problème que vous avez @victoriastuart . Êtes-vous sûr d'activer l'environnement / d'avoir python dans l'environnement dans lequel vous conda install scikit-learn ?

nfliu at kilauea in ~
$ conda create -n test python=3
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following NEW packages will be INSTALLED:

    openssl:    1.0.2j-0
    pip:        8.1.2-py35_0
    python:     3.5.2-0
    readline:   6.2-2
    setuptools: 27.2.0-py35_0
    sqlite:     3.13.0-0
    tk:         8.5.18-0
    wheel:      0.29.0-py35_0
    xz:         5.2.2-0
    zlib:       1.2.8-3

Proceed ([y]/n)? y

Linking packages ...
[      COMPLETE      ]|###################################################| 100%
#
# To activate this environment, use:
# > source activate test
#
# To deactivate this environment, use:
# > source deactivate test
#

nfliu at kilauea in ~
$ source activate test
(test) nfliu at kilauea in ~
$ conda install scikit-learn
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    numpy-1.11.2               |           py35_0         2.7 MB
    scipy-0.18.1               |      np111py35_0        12.3 MB
    scikit-learn-0.18          |      np111py35_0         4.6 MB
    ------------------------------------------------------------
                                           Total:        19.6 MB

The following NEW packages will be INSTALLED:

    mkl:          11.3.3-0
    numpy:        1.11.2-py35_0
    scikit-learn: 0.18-np111py35_0
    scipy:        0.18.1-np111py35_0

Proceed ([y]/n)? y

Fetching packages ...
numpy-1.11.2-p 100% |#############################################################################################################################################################################################| Time: 0:00:01   1.57 MB/s
scipy-0.18.1-n 100% |#############################################################################################################################################################################################| Time: 0:00:02   6.30 MB/s
scikit-learn-0 100% |#############################################################################################################################################################################################| Time: 0:00:01   2.66 MB/s
Extracting packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
(test) nfliu at kilauea in ~
$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn.model_selection import train_test_split
>>>

@nelson-liu : merci pour votre suggestion... Oui : je travaillais tout le temps dans mon environnement virtuel Python 3.5 (terminal ; Python). Travailler maintenant, selon ma réponse. :-)

@victoriastuart Je suis sûr que cela vous est arrivé (voir la grande boîte rouge) :
http://scikit-learn.org/dev/install.html#canopy -and-anaconda-for-all-supported-platforms

N'essayez pas de mettre à niveau un package avec conda que vous avez installé avec pip. ça ne marchera pas. C'est un bug de setuptools.

@amueller -- Voici le truc: je suis dans un venv installé par CONDA: au début, je suis à peu près sûr que sklearn n'était pas présent (je ne l'ai pas utilisé auparavant dans ce venv, donc il n'aurait pas été installé auparavant , par exemple via pip; peu importe, je préfère toujours conda à pip - d'abord, dans mon venv - en utilisant pip en dernier recours):

 (py35) [victoria @victoria ~]$ conda install scikit-learn
 Récupération des métadonnées du package .......
 Résolution des spécifications du package : ..........
 Plan de package pour l'installation dans l'environnement /home/victoria/anaconda3/envs/py35 :
 Les packages suivants seront téléchargés :
 forfait | construire
 ---------------------------|-----------------
 numpy-1.11.2 | py35_0 6,1 Mo
 scipy-0.18.1 | np111py35_0 30,4 Mo
 scikit-learn-0.18 | np111py35_0 10,8 Mo
 théano-0.8.2 | py35_0 3,7 Mo
 -------------------------------------------------- ----------
 Total : 51,0 Mo
 Les NOUVEAUX packages suivants seront INSTALLÉS :
 scikit-learn : 0.18-np111py35_0 
 Les packages suivants seront mis à jour :
 astropie : 1.1.2-np110py35_0 --> 1.2.1-np111py35_0 
 goulot d'étranglement : 1.0.0-np110py35_1 --> 1.1.0-np111py35_0 
 matplotlib : 1.5.1-np110py35_0 --> 1.5.1-np111py35_0 
 numpy : 1.10.4-py35_2 --> 1.11.2-py35_0 
 scipy : 0.17.1-np110py35_1 --> 0.18.1-np111py35_0
 théano : 0.7.0-np110py35_0 --> 0.8.2-py35_0 
 Continuer ([o]/n) ? 
 [... coupez ...]

Remarque ci-dessus :

Les NOUVEAUX packages suivants seront INSTALLÉS : scikit-learn : 0.18-np111py35_0

Donc, en résumé : selon les procédures standard et recommandées par sklearn (http://scikit-learn.org/stable/install.html), j'installe sklearn -- apparemment s'installe correctement (aucun avertissement), puis essayez de l'utiliser : échoue importer avec message d'erreur ésotérique >> recherche Google >> cette page. J'apprécie toutes les minuties sur ceci ou cela (sklearn viz-a-viz NumPy ou SciPy, ...) , mais le point principal est qu'en tant qu'utilisateur, j'avais besoin de travailler pour résoudre ce problème, qui a apparemment (haut de thread) est en cours pour certains utilisateurs.

le problème était en fait qu'une réponse de stackoverflow faisait référence à un code qui n'avait pas encore été publié sur conda/pip (nous venons de le faire il y a 2 semaines, donc naturellement le code ne fonctionnait pas sur les versions installées sur conda/pip jusque-là). Votre problème semble un peu sans rapport, mais je suis heureux que cela fonctionne malgré tout.

@nelson-liu : lol merci -- et toutes les personnes impliquées dans ce projet/développement. Je sais que c'est incroyablement compliqué et que des complications telles que celles rapportées ici sont inévitables. Quoi qu'il en soit, mon installation sklearn semble fonctionner maintenant, comme résumé ci-dessus. [Je commencerai à l'utiliser dans quelques heures.] Espérons que la discussion ci-dessus informera/aidera les autres. Encore une fois, beaucoup d'appréciation! :-)

@victoriastuart, je

>>> import sklearn
>>> sklearn.__version__

céderait (je m'attends à ce que ce ne soit pas ce que nous pensons que c'est, à savoir pas 0,18).
Je soupçonne que c'est un problème avec le $PYTHONPATH et peut-être dessiner scikit-learn à partir d'un autre emplacement; la correction d'une telle erreur éviterait, espérons-le, de telles erreurs avec d'autres packages.

@nelson-liu : bien sûr, pas de problème ! ;-)

 ----------------------------
 PYTHON 3.5 VENV (py35 | p3) :
 ----------------------------
 [victoria @victoria Vancouver]$ p3
 [Anaconda Python 3.5 venv (source activate py35)]
 (py35) [victoria @victoria Vancouver]$ quel python
 /home/victoria/anaconda3/envs/py35/bin/python
 (py35) [victoria @victoria Vancouver]$ liste conda | egrep -wi 'scikit|numpy|scipy'
 numpy 1.11.2 py35_0
 scikit-learn 0.18 np111py35_0
 scipy 0.18.1 np111py35_0
 (py35) [victoria @victoria Vancouver]$ liste de pip | egrep -wi 'scikit|numpy|scipy'
 numpy (1.11.1)
 scikit-image (0.12.3)
 scikit-learn (0.18)
 scipy (0.17.0)
 (py35) [victoria @victoria Vancouver]$ P
 [P : python]
 Python 3.5.2 (par défaut, 28 juin 2016, 08:46:01)
 [GCC 6.1.1 20160602] sur Linux
 Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
 >>> à partir de sklearn.model_selection importer train_test_split
 >>> importer sklearn
 >>> sklearn.__version__
 '0.18'
 >>> quitter()
 (py35) [victoria @victoria Vancouver]$ sd
 [Anaconda venv désactiver (désactiver la source)]
 [victoria @victoria Vancouver]$
 ---------------------------------------------
 ENVIRONNEMENT HTE (NON VIRTUEL) (PYTHON 3.5) :
 ---------------------------------------------
 [victoria @victoria Vancouver]$ quel python
 /usr/bin/python
 [victoria @victoria Vancouver]$ liste conda | egrep -wi 'scikit|numpy|scipy'
 numpy 1.11.1
 numpy 1.10.4 py35_1
 scikit-image 0.12.3 np110py35_0
 scikit-apprendre 0.18
 scikit-learn 0.17.1 np110py35_0
 scipy 0.17.0 np110py35_2
 [victoria @victoria Vancouver]$ liste de pip | egrep -wi 'scikit|numpy|scipy'
 [victoria @victoria Vancouver]$ P
 [P : python]
 Python 3.5.2 (par défaut, 28 juin 2016, 08:46:01)
 [GCC 6.1.1 20160602] sur Linux
 Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
 >>> sklearn.__version__
 Traceback (appel le plus récent en dernier) :
 Déposer "", ligne 1, dans
 NameError : le nom 'sklearn' n'est pas défini
 >>> importer sklearn
 Traceback (appel le plus récent en dernier) :
 Déposer "", ligne 1, dans
 ImportError : aucun module nommé 'sklearn'
 >>>
 ----------------------------
 Python 2.7 VENV (py27 | p2) :
 ----------------------------
 [victoria @victoria Vancouver]$ p2
 [Anaconda Python 2.7 venv (source activate py27)]
 (py27) [victoria @victoria Vancouver]$ liste conda | egrep -wi 'scikit|numpy|scipy'
 numpy 1.11.1
 numpy 1.10.4 py27_1
 scikit-image 0.12.3 np110py27_0
 scikit-learn 0.17.1 np110py27_0
 scipy 0.17.1
 scipy 0.17.0 np110py27_0
 (py27) [victoria @victoria Vancouver]$ liste de pip | egrep -wi 'scikit|numpy|scipy'
 numpy (1.11.1)
 scikit-image (0.12.3)
 scikit-learn (0.17.1)
 scipy (0.17.1)
 (py27) [victoria @victoria Vancouver]$ P
 [P : python]
 Python 2.7.12 |Anaconda personnalisé (64 bits)| (par défaut, le 2 juillet 2016, 17:42:40)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] sur linux2
 Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
 Anaconda vous est présenté par Continuum Analytics.
 Veuillez consulter : http://continuum.io/thanks et https://anaconda.org
 >>> importer sklearn
 >>> sklearn.__version__
 '0.17.1'
 >>>
 (py27) [victoria @victoria Vancouver]$

AFAIK, mon Python 2.7 venv aurait été "similaire" à mon Python 3.5 venv, hier, avant mon installation dans ce (py35) venv.

désolé, je voulais dire le scikit-learn installé sur conda avec lequel vous aviez auparavant des problèmes. Celui-ci est le pip installé que vous mettez dessus pour résoudre vos problèmes. Comme il semble que vous puissiez importer train_test_split ici, python est probablement en train de dessiner à partir de pip. Je suis curieux de voir à quoi cela ressemblerait si vous désinstalliez les éléments que vous avez installés via pip (revenant ainsi à l'état où vous aviez l'ImportError).

@nelson-liu : oui / oups ! Je m'en suis rendu compte, immédiatement après avoir posté cette sortie. Mis à jour, maintenant, ci-dessus. ;-)

L'environnement python3.5 sur lequel vous dessiniez contient toujours scikit-learn from pip, ce qui brouille considérablement les pistes. Pas trop sûr de ce qui se passe sur votre machine, surtout parce que vous ne pouvez même pas importer scikit-learn dans votre environnement racine ; Je pense que scikit-learn dans l'env py35 est tiré d'un autre endroit que vous ne voulez pas qu'il soit. Je vérifierais votre $PATH et $PYTHONPATH si vous voulez éviter de futurs problèmes comme celui-ci avec d'autres packages, mais c'est bien de voir que cela "fonctionne" quand même.

Ahhh .. bons points ! ;-)

Mise à jour : Hey -- bonne prise (les gens intelligents, cever là-bas ; ;-) !! J'ai eu des problèmes avec mon $PYTHONPATH, résultant de mon utilisation de PyCharm plus tôt cette année en tant que mon IDE Python. Pour les résoudre, j'ai créé un my_script.pth dans mon répertoire racine PyCharm, qui répertorie mes PYTHONPATHS, avec des liens symboliques vers ce fichier *.pth dans les dossiers de mon package Pyhton installé sur conda ; par exemple

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink to: /home/victoria/PycharmProjects/scripts/my_scripts.pth

[Je sais: c'est compliqué, mais j'avais besoin de le faire.] Pour faire court, je préfère en fait Geany comme mon IDE / éditeur (multi-plateforme), alors j'ai ensuite répliqué / mis à jour ces chemins, par exemple

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink (now!) to: /home/victoria/GeanyProjects/Victoria/scripts/my_scripts.pth

Mon fichier (Geany) my_scripts.pth ($PYTHONPATH) pointait vers

/home/victoria/.local/lib/python2.7

... qui, je crois, a pu être le problème ?

Cette page vous a été utile?
0 / 5 - 0 notes