webentwicklung-frage-antwort-db.com.de

Conda-Umgebungen werden in Jupyter Notebook nicht angezeigt

Ich habe Anaconda (mit Python 2.7) und Tensorflow in einer Umgebung namens tensorflow installiert. Ich kann Tensorflow in dieser Umgebung erfolgreich importieren.

Das Problem ist, dass Jupyter Notebook die neu erstellte Umgebung nicht erkennt. Egal, ob ich Jupyter Notebook über den GUI-Navigator oder über die Befehlszeile innerhalb der tensorflow -Env starte, das Menü enthält nur einen Kernel genannt Python [Root], und Tensorflow kann nicht importiert werden. Natürlich habe ich diese Option mehrmals angeklickt, die Datei gespeichert, wieder geöffnet, aber das hat nicht geholfen.

Seltsamerweise kann ich die beiden Umgebungen sehen, wenn ich die Registerkarte Conda auf der Startseite von Jupyter öffne. Aber wenn ich die Registerkarte Files öffne und versuche, ein Notizbuch new zu erstellen, habe ich immer noch nur einen Kernel.

Ich habe mir diese Frage angesehen: Conda-Umgebung mit Jupyter Notebook verknüpfen Auf meinem Computer befindet sich jedoch kein Verzeichnis wie ~/Library/Jupyter/kernels! Dieses Jupyter-Verzeichnis hat nur ein Unterverzeichnis mit dem Namen runtime.

Ich bin ziemlich verwirrt. Sollen Conda-Umgebungen automatisch zu Kerneln werden? (Ich folgte https://ipython.readthedocs.io/en/stable/install/kernel_install.html um die Kernel manuell einzurichten, aber mir wurde gesagt, dass ipykernel nicht gefunden wurde.)

266
user31039

Ich glaube nicht, dass die anderen Antworten mehr funktionieren, da conda aufgehört hat, Umgebungen automatisch als Jupyter-Kernel einzurichten. Sie müssen Kernel für jede Umgebung auf folgende Weise manuell hinzufügen:

source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

Wie hier dokumentiert: http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments Siehe auch dieses Problem .

Nachtrag: Sie sollten in der Lage sein, das Paket nb_conda_kernels mit conda install nb_conda_kernels zu installieren, um alle Umgebungen automatisch hinzuzufügen, siehe https://github.com/Anaconda-Platform/nb_conda_kernels

427
Andreas Mueller

Das Ärgerliche ist, dass Sie in Ihrer tensorflow Umgebung jupyter notebook ausführen können, ohne jupyter in dieser Umgebung zu installieren . Renn einfach

(tensorflow) $ conda install jupyter

und die tensorflow -Umgebung sollte jetzt in Jupyter Notebooks sichtbar sein, die in einer Ihrer conda -Umgebungen als etwas wie Python [conda env:tensorflow] gestartet wurden.

99
Octavius

Wenn Ihre Umgebungen nicht angezeigt werden, ist nb_conda_kernels wahrscheinlich nicht in der Umgebung installiert, in der Jupyter installiert ist. Anacondas Dokumentation besagt das

nb_conda_kernels sollte in der Umgebung installiert sein, in der Sie Jupyter Notebook oder JupyterLab ausführen. Dies könnte Ihre Basis-Conda-Umgebung sein, muss es aber nicht sein. Wenn beispielsweise die Umgebung notebook_env das Notebook-Paket enthält, würden Sie ausführen

conda install -n notebook_env nb_conda_kernels

In allen anderen Umgebungen, auf die Sie in Ihren Notebooks zugreifen möchten, muss ein entsprechendes Kernelpaket installiert sein. Um beispielsweise auf eine Python -Umgebung zuzugreifen, muss das ipykernel-Paket vorhanden sein. z.B.

conda install -n python_env ipykernel

Um eine R-Umgebung nutzen zu können, muss das Paket r-irkernel vorhanden sein. z.B.

conda install -n r_env r-irkernel

Für andere Sprachen muss der entsprechende Kernel installiert sein.

Beachten Sie, dass zum Zeitpunkt der ursprünglichen Veröffentlichung eine mögliche Ursache in nb_conda, die Python 3.6-Umgebungen noch nicht unterstützt lag.

Wenn andere Lösungen Jupyter nicht dazu bringen, andere Conda-Umgebungen zu erkennen, können Sie jupyter immer in einer bestimmten Umgebung installieren und ausführen. Möglicherweise können Sie in Jupyter keine anderen Umgebungen sehen oder zu diesen wechseln.

$ conda create -n py36_test -y python=3.6 jupyter
$ source activate py36_test
(py36_test) $ which jupyter
/home/schowell/anaconda3/envs/py36_test/bin/jupyter
(py36_test) $ jupyter notebook

Beachten Sie, dass ich Python 3.6.1 in diesem Notizbuch ausführe: enter image description here

Beachten Sie, dass in vielen Umgebungen der zusätzliche Speicherplatz für die Installation von Jupyter in jeder Umgebung unerwünscht sein kann (abhängig von Ihrem System).

94

Ich musste alle in den Top 3 genannten Befehle ausführen, um dies zum Laufen zu bringen:

conda install jupyter
conda install nb_conda
conda install ipykernel
python -m ipykernel install --user --name mykernel
53
coolscitist

Führen Sie einfach conda install ipykernel in Ihrer neuen Umgebung aus, nur dann erhalten Sie einen Kernel mit dieser Umgebung. Dies funktioniert auch dann, wenn Sie verschiedene Versionen in den einzelnen Envs installiert haben und das Jupyter Notebook nicht erneut installiert wird. Sie können Ihr Notebook von jedem Ort aus starten, an dem Sie neu hinzugefügte Kernel sehen können.

45
rakesh

Zusammenfassung (tldr)

Wenn der 'python3'-Kernel die Python -Installation immer in der Umgebung ausführen soll, in der er gestartet wird, löschen Sie den' python3'-Kernel des Benutzers, der Vorrang vor der aktuellen Umgebung hat:

jupyter kernelspec remove python3

Volle Lösung

Ich werde eine alternative und einfachere Lösung für den folgenden Fall posten:

  • Sie haben eine Conda-Umgebung erstellt
  • In dieser Umgebung ist jupyter installiert (das auch ipykernel installiert)
  • Wenn Sie den Befehl jupyter notebook ausführen und ein neues Notizbuch durch Klicken auf 'python3' im Dropdown-Menü 'Neu' erstellen, führt dieses Notizbuch python in der Basisumgebung und nicht in der aktuellen Umgebung aus.
  • Sie möchten, dass beim Starten eines neuen Notizbuchs mit 'python3' in einer beliebigen Umgebung die Version Python aus dieser Umgebung und NICHT aus der Basis ausgeführt wird

Ich werde den Namen 'test_env' für die Umgebung für den Rest der Lösung verwenden. Beachten Sie auch, dass 'python3' der Name des Kernels ist.

Die derzeit am häufigsten gewählte Antwort funktioniert, aber es gibt eine Alternative. Es heißt, folgendes zu tun:

python -m ipykernel install --user --name test_env --display-name "Python (test_env)"

Dadurch haben Sie die Möglichkeit, die Umgebung test_env unabhängig von der Umgebung zu verwenden, in der Sie jupyter notebook starten. Wenn Sie jedoch ein Notizbuch mit 'python3' starten, wird weiterhin die Python -Installation aus der Basisumgebung verwendet.

Was wahrscheinlich passiert ist, dass es einen Benutzer-Python3-Kernel gibt, der existiert. Führen Sie den Befehl jupyter kernelspec list aus, um alle Ihre Umgebungen aufzulisten. Wenn Sie beispielsweise einen Mac haben, erhalten Sie Folgendes zurück (mein Benutzername ist Ted).

python3       /Users/Ted/Library/Jupyter/kernels/python3

Was Jupyter hier tut, ist das Durchsuchen von drei verschiedenen Pfaden nach Kerneln. Es geht von User , zu Env , zu System . In dieses Dokument finden Sie weitere Informationen zu den Pfaden, die für jedes Betriebssystem gesucht werden.

Die beiden obigen Kernel befinden sich beide im Benutzerpfad, was bedeutet, dass sie unabhängig von der Umgebung verfügbar sind, in der Sie ein Jupyter-Notizbuch starten. Dies bedeutet auch, dass Sie niemals darauf zugreifen können, wenn sich auf der Umgebungsebene ein anderer 'python3'-Kernel befindet.

Für mich ist es sinnvoller, den 'python3'-Kernel aus der Umgebung auszuwählen, aus der Sie das Notizbuch gestartet haben, und Python aus dieser Umgebung auszuführen.

Sie können überprüfen, ob Sie eine andere 'python3'-Umgebung haben, indem Sie im Env-Suchpfad nach Ihrem Betriebssystem suchen (siehe den Link zu den obigen Dokumenten). Für mich (auf meinem Mac) habe ich den folgenden Befehl ausgegeben:

 ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels

Und ich hatte tatsächlich einen 'Python3'-Kernel dort aufgelistet.

Dank Kommentar zu diesem GitHub-Problem (siehe die erste Antwort) können Sie die Benutzerumgebung 'python3' mit dem folgenden Befehl entfernen:

jupyter kernelspec remove python3

Wenn Sie jetzt jupyter kernelspec list ausführen, erhalten Sie unter der Annahme, dass test_env noch aktiv ist, Folgendes:

python3       /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3

Beachten Sie, dass sich dieser Pfad im Verzeichnis test_env befindet. Wenn Sie eine neue Umgebung erstellen, jupyter installieren, aktivieren und die Kernel auflisten, erhalten Sie einen weiteren 'python3'-Kernel in seinem Umgebungspfad.

Der User-Kernel 'python3' hatte Vorrang vor allen Env-Kerneln 'python3'. Durch das Entfernen wurde der Kernel der aktiven Umgebung 'python3' freigelegt und konnte jedes Mal ausgewählt werden. Auf diese Weise müssen keine Kernel mehr manuell erstellt werden. Sinnvoller ist es auch in Bezug auf die Softwareentwicklung, wenn man sich in einer einzigen Umgebung isolieren möchte. Das Ausführen eines Kernels, der sich von der Host-Umgebung unterscheidet, erscheint nicht natürlich.

Es scheint auch, dass dieser Benutzer 'python3' nicht standardmäßig für alle installiert ist, sodass nicht alle von diesem Problem betroffen sind.

10
Ted Petrou

Wir haben viel mit diesem Problem zu kämpfen, und hier ist, was für uns funktioniert. Wenn Sie den Conda-Forge-Kanal verwenden, müssen Sie sicherstellen, dass Sie aktualisierte Pakete aus conda-forge verwenden, auch in Ihrer Miniconda -Root-Umgebung.

Also installiere Miniconda und dann mache:

conda config --add channels conda-forge --force
conda update --all  -y
conda install nb_conda_kernels -y
conda env create -f custom_env.yml -q --force
jupyter notebook

und Ihre benutzerdefinierte Umgebung wird in Jupyter als verfügbarer Kernel angezeigt, solange ipykernel zur Installation in Ihrer custom_env.yml -Datei aufgeführt ist, wie im folgenden Beispiel:

name: bqplot
channels:
- conda-forge
- defaults
dependencies:
- python>=3.6
- bqplot
- ipykernel

Um zu beweisen, dass es mit einer Reihe von benutzerdefinierten Umgebungen funktioniert, folgt ein Screenshot von Windows:

enter image description here

9
Rich Signell
    $ conda install nb_conda_kernels

(In der Conda-Umgebung, in der Sie jupyter notebook ausführen) werden alle Conda-Envs automatisch verfügbar. Für den Zugriff auf andere Umgebungen müssen die entsprechenden Kernel installiert sein. Hier ist das ref .

9
ohailolcat

Ich bin auf dasselbe Problem gestoßen, bei dem meine neue Conda-Umgebung myenv nicht als Kernel oder neues Notizbuch ausgewählt werden konnte. Das Ausführen von jupter notebook aus dem env heraus ergab dasselbe Ergebnis.

Meine Lösung und was ich darüber gelernt habe, wie Jupyter-Notizbücher Conda-Envs und Kernel erkennen:

Installation von jupyter und ipython in myenv mit conda:

conda install -n myenv ipython jupyter

Danach starte ich jupter notebook außerhalb einer beliebigen myenv gelisteten Umgebung als Kernel zusammen mit meinen vorherigen Umgebungen.

Python [conda env:old]
Python [conda env:myenv]

Ausführen des Notebooks, sobald ich die Umgebung aktiviert habe:

source activate myenv
jupyter notebook

verbirgt alle meine anderen Umgebungskerne und zeigt nur meine Sprachkerne an:

python 2
python 3
R
7
Shri Samson

Während @ coolscitist's answer für mich gearbeitet hat, gibt es auch einen Weg, der Ihre Kernel-Umgebung mit dem kompletten Jupyter-Paket + deps nicht überfrachtet. Es wird in den ipython docs beschrieben und ist (ich vermute) nur erforderlich, wenn Sie den Notebook-Server in einer Nicht-Basisumgebung ausführen.

conda activate name_of_your_kernel_env
conda install ipykernel
python -m ipykernel install --prefix=/home/your_username/.conda/envs/name_of_your_jupyter_server_env --name 'name_of_your_kernel_env'

Sie können mit prüfen, ob es funktioniert

conda activate name_of_your_jupyter_server_env 
jupyter kernelspec list
4
jan-glx

Dies war so frustrierend. Mein Problem war, dass sich Jupyter in einer neu gebauten Conda Python36-Umgebung weigerte, „seaborn“ zu laden - obwohl seaborn in dieser Umgebung installiert war. Es schien in der Lage zu sein, viele andere Dateien aus derselben Umgebung zu importieren - zum Beispiel numpy und pandas, aber nur nicht seaborn. Ich habe viele der hier und in anderen Threads vorgeschlagenen Korrekturen ohne Erfolg versucht. Bis mir klar wurde, dass Jupyter nicht den Kernel python in dieser Umgebung ausführte, sondern das System python als Kernel. Obwohl ein anständig aussehender Kernel und kernel.json bereits in der Umgebung vorhanden waren. Erst nach dem Lesen dieses Teils der ipython-Dokumentation: https://ipython.readthedocs.io/en/latest/install/kernel_install.html#kernels-for-different-environments und mit diesen Befehlen:

source activate other-env
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"

Ich konnte alles gut machen. (Ich habe die -user-Variable nicht verwendet.).

Eine Sache, die ich noch nicht herausgefunden habe, ist, wie man die Standardeinstellung python auf "Python (other-env)" setzt. Derzeit verwendet eine vorhandene .ipynb-Datei, die über den Startbildschirm geöffnet wird, Systempython. Ich muss das Kernel-Menü "Change Kernel" verwenden, um die Umgebung Python auszuwählen.

3
George J Wright

Das Paket nb_conda_kernels ist der beste Weg, jupyter mit conda zu verwenden. Mit minimalen Abhängigkeiten und Konfigurationen können Sie andere Conda-Umgebungen eines Jupyter-Notebooks verwenden, das in einer anderen Umgebung ausgeführt wird. Zitiert sein Dokumentation :

Installation

Dieses Paket soll ausschließlich mit conda verwaltet werden. Es sollte in der Umgebung installiert sein, in der Sie Jupyter Notebook oder JupyterLab ausführen. Dies könnte Ihre base Conda-Umgebung sein, muss es aber nicht sein. Wenn beispielsweise die Umgebung notebook_env das Notebook-Paket enthält, würden Sie ausführen

conda install -n notebook_env nb_conda_kernels

In allen anderen Umgebungen, auf die Sie in Ihren Notebooks zugreifen möchten, muss ein entsprechendes Kernelpaket installiert sein. Um beispielsweise auf eine Python -Umgebung zuzugreifen, muss das ipykernel -Paket vorhanden sein. z.B.

conda install -n python_env ipykernel

Um eine R-Umgebung nutzen zu können, muss das Paket r-irkernel vorhanden sein. z.B.

conda install -n r_env r-irkernel

Für andere Sprachen muss deren entsprechender Kernel installiert sein.

Dann müssen Sie nur noch den Jupyter Notebook Server starten:

conda activate notebook_env  # only needed if you are not using the base environment for the server
# conda install jupyter # in case you have not installed it already
jupyter

enter image description here


Trotz der Fülle von Antworten und der Bemühungen von @ merv, sie zu verbessern, ist es immer noch schwierig, eine gute Antwort zu finden. Ich habe dieses CW gemacht, also bitte stimmen Sie es nach oben ab oder verbessern Sie es!

2
jan-glx

Dies funktionierte für mich in Windows 10 und der neuesten Lösung:

1) Geh in diese Conda-Umgebung (aktiviere deinen_env_namen)

2) conda install -n your_env_name ipykernel

3) python -m ipykernel install --user --name build_central --display-name "your_env_name"

(HINWEIS: Fügen Sie in Schritt 3 die Anführungszeichen um "your_env_name" ein.)

1
bad programmer

Ich hatte nb_conda in all meinen Conda-Envs installiert, aber sie würden immer noch nicht als auswählbare Kernel in Jupyter Notebook angezeigt. Ich habe jupyter notebook von Conda Base ausgeführt.

m dies zu beheben, musste ich auch nb_conda und nb_conda_kernels in der Basis installieren. Dann würden endlich alle meine Envs als Kernel angezeigt.

Hoffe das hilft jemandem.

0
kett

Befolgen Sie die Anweisungen in der iPython-Dokumentation , um der Liste der in Jupyter Notebook zur Auswahl stehenden Kernel verschiedene Conda-Umgebungen hinzuzufügen. Zusammenfassend muss nach der Installation von ipykernel jede Conda-Umgebung einzeln in einem Terminal aktiviert und der Befehl python -m ipykernel install --user --name myenv --display-name "Python (myenv)" ausgeführt werden, wobei myenv die Umgebung (der Kernel) ist, die hinzugefügt werden soll.

0