Zusammenfassung (tldr)
Wenn Sie möchten, dass der 'python3'-Kernel die Python-Installation immer in der Umgebung ausführt, in der sie gestartet wird, löschen Sie den' python3'-Kernel des Benutzers, der Vorrang vor der aktuellen Umgebung hat:
jupyter kernelspec remove python3
Vollständige Lösung
Ich werde eine alternative und einfachere Lösung für den folgenden Fall veröffentlichen:
- Sie haben eine Conda-Umgebung erstellt
- In dieser Umgebung ist jupyter installiert (das auch ipykernel installiert).
- Wenn Sie den Befehl ausführen
jupyter notebook
und ein neues Notizbuch erstellen, indem Sie im Dropdown-Menü "Neu" auf "python3" klicken, 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 Python-Version 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 außerdem, dass 'python3' der Name des Kernels ist.
Die derzeit am besten 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)"
Dies gibt Ihnen die Möglichkeit, die Umgebung test_env zu verwenden, unabhängig davon, aus welcher Umgebung Sie starten jupyter notebook
. Beim Starten eines Notebooks mit 'python3' wird jedoch weiterhin die Python-Installation aus der Basisumgebung verwendet.
Was wahrscheinlich passiert, ist, dass ein Benutzer-Python3-Kernel vorhanden ist. Führen Sie den Befehl aus, jupyter kernelspec list
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 die Suche in drei verschiedenen Pfaden nach Kerneln. Es geht vom Benutzer über Env bis zum System . Siehe dieses Dokument weitere Informationen zu den Pfaden, nach denen für jedes Betriebssystem gesucht wird.
Die beiden oben genannten Kernel befinden sich beide im Benutzerpfad. Dies bedeutet, dass sie unabhängig von der Umgebung verfügbar sind, in der Sie ein Jupyter-Notebook starten. Dies bedeutet auch, dass Sie niemals darauf zugreifen können, wenn es auf Umgebungsebene einen anderen 'Python3'-Kernel gibt.
Für mich ist es sinnvoller, wenn Sie den Kernel 'python3' aus der Umgebung auswählen, aus der Sie das Notebook gestartet haben, Python aus dieser Umgebung ausführen.
Sie können überprüfen, ob Sie eine andere "Python3" -Umgebung haben, indem Sie im Env-Suchpfad für Ihr Betriebssystem nachsehen (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 dieses GitHub-Problemkommentars (siehe erste Antwort) können Sie die Benutzerumgebung 'python3' mit dem folgenden Befehl entfernen:
jupyter kernelspec remove python3
Wenn Sie jetzt ausführen jupyter kernelspec list
und davon ausgehen, dass test_env noch aktiv ist, erhalten Sie 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 'python3'-Kernel hatte Vorrang vor allen Env' python3'-Kerneln. Durch das Entfernen wurde der Kernel der aktiven Umgebung 'python3' verfügbar gemacht und konnte jedes Mal ausgewählt werden. Dadurch entfällt die Notwendigkeit, Kernel manuell zu erstellen. 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 Hostumgebung unterscheidet, scheint nicht selbstverständlich zu sein.
Es scheint auch, dass dieser Benutzer 'python3' nicht standardmäßig für alle installiert ist, sodass nicht alle mit diesem Problem konfrontiert sind.
conda install ipykernel
in dieser Umgebung.