2017-11-14 9 views
0

Ich habe ein Problem Import scikit-learn in meiner Jupyter Notebooks, und ich bin ratlos gefunden, warum dies nicht funktioniert. Ich kann mich nicht erinnern, dieses Problem zuvor mit anderen Paketen gehabt zu haben. Ich habe mehrere Threads mit Leuten gesehen, die ähnliche Probleme mit diesem spezifischen Modul haben, aber keiner der vorgeschlagenen Checks hat mein Problem gelöst und mir auch nicht aufgezeigt, was falsch sein könnte. Ich habe versucht, so viele Informationen wie möglich hinzuzufügen, um herauszufinden, warum dies nicht funktioniert.Fehler: Modul nicht in Jupyter Notebook (sklearn)

ich anaconda verwende meine Pakete zu verwalten, und scikit-learn installiert wurden wie folgt:

source activate python3 
conda install scikit-learn 
Fetching package metadata ............. 
Solving package specifications: . 

# All requested packages already installed. 
# packages in environment at /Users/overaa/anaconda/envs/python3: 
# 
scikit-learn    0.19.1   py36hffbff8c_0 

Nun, wenn ich eine Python-Sitzung direkt von der Kommandozeile starten, import sklearn funktioniert wie vorgesehen und das Modul importiert korrekt . Dadurch könnte die gleiche in Jupyter Ergebnisse in

ModuleNotFoundError: No module named 'sklearn'

Ich habe eine Reihe von Dingen überprüft. Stellen Sie zuerst sicher, dass mein Jupiter- und Jupiter-Notizbuch auf die richtige Umgebung zeigt

which jupyter 
/Users/overaa/anaconda/envs/python3/bin/jupyter 
which jupyter-notebook 
/Users/overaa/anaconda/envs/python3/bin/jupyter-notebook 

So das Notebook auscheckt.

dann aus einer Befehlszeile Python-Sitzung (in der gleichen Umgebung wie, wo ich mein Notebook starten):

>>> import sklearn 
>>> sklearn.__file__ 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages/sklearn/__init__.py' 

So scikit-learn ist auch in der richtigen Umgebung installiert.

Jetzt vergleichen, dass ich die gleiche Version leite;

von der Kommandozeile:

>>> print(sys.version) 
3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:04:09) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] 

Von Jupyter Notebook:

print(sys.version) 
3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:04:09 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] 

die Pakete Pfad Vergleich.

von der Kommandozeile:

import site 
print(site.getsitepackages()) 
['/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages'] 

Von Jupyter Notebook:

import site 
print(site.getsitepackages()) 
['/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages'] 

Ebenso für meine sys.path

Befehlszeile:

>>> print(sys.path) 
['', '/Users/overaa/anaconda/envs/python3/lib/python36.zip', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/lib-dynload', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages/setuptools-27.2.0-py3.6.egg'] 

Jupyter:

print(sys.path) 
['', '/Users/overaa/anaconda/envs/python36/lib/python36.zip', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/lib-dynload', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages/IPython/extensions', 
'/Users/overaa/.ipython'] 

So ist alles gleich, mit der Ausnahme, dass das Verzeichnis mit den setuptools zwischen der Befehlszeilenversion und der Jupyter Version unterscheiden. Ich habe auch bemerkt, dass scikit-learn scheint in dem site_packages subdir installiert werden, anstatt in dem site-packages Unterverzeichnis, das ist, wo Jupyter für Module zu suchen scheinen. Also habe ich zwei Dinge ausprobiert. Fügen Sie zuerst den Pfad zu meinem JUPYTER_PATH in meinem .bash_profile hinzu, bevor Sie mein Notebook starten.

export JUPYTER_PATH="/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages:$JUPYTER_PATH" 

Ich habe auch versucht, es zu meinem sys.path direkt im jupyter Notebook hinzufügen, vor dem Versuch, scikit-learn

sys.path.append("/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages") 

Beide ohne Erfolg zu importieren, weigert sich sklearn noch in mein Notizbuch zu importieren.

Irgendwelche Ideen, warum scikit-learn nicht in mein Jupyter Notizbuch importiert wird, würden sehr geschätzt werden. Gibt es mehr Dinge, die ich überprüfen kann? Und wie bekomme ich das zur Arbeit?

Ich habe versucht, meine Umgebung zu aktivieren/deaktivieren, starten Sie die Kernel usw. auch ohne Erfolg.

EDIT: Ich habe keine Probleme, die andere Pakete importieren, wie numpy oder scipy

+0

Was ist mit anderen Bibliotheken wie numpy - können Sie sie importieren? – kazemakase

+0

Ja, das ist kein Problem –

Antwort

0

Stellt sich heraus, dass das Entfernen des Ordners ~/Library/Jupyter/kernels und das Neustarten meines Notebooks den Trick gemacht haben. Obwohl es scheint, dass der Kernel in jupyter kernelspec list war, was ich erwartet hatte. Trotzdem funktioniert es jetzt. Es scheint, dass es kein ausschließliches Problem sklearn ist. Ich folgte im Grunde, was this person wrote.

0

Stellen Sie sicher, beide numpy und scipy installiert haben - scikit-learn von ihnen abhängt, aber sie nicht für Sie installieren.

Starten Sie Ihren Notebook-Server nach der Installation neu.

+0

Ja, 'numpy' und' scipy' sind beide installiert, und ich hatte nie Probleme beim Importieren von Paketen von diesen beiden. Neustart des Notebook-Servers hat das Problem leider auch nicht gelöst. –