Ich verwende IPython-Notebooks und würde gerne auswählen können, ob ich ein 2.x- oder 3.x-Python-Notebook in IPython erstellen möchte.
Ursprünglich hatte ich Anaconda. Bei Anaconda musste eine globale Umgebungsvariable geändert werden, um die gewünschte Python-Version auszuwählen, und dann konnte IPython gestartet werden. Das ist nicht das, wonach ich gesucht habe, also habe ich Anaconda deinstalliert und jetzt meine eigene Installation mit MacPorts und PiP eingerichtet. Es scheint, dass ich immer noch Folgendes verwenden muss
port select --set python <python version>
verwenden, um zwischen Python 2.x und 3.x umzuschalten, was nicht besser ist als die Anaconda-Lösung.
Gibt es eine Möglichkeit, nach dem Start eines IPython-Notebooks auszuwählen, welche Python-Version verwendet werden soll, vorzugsweise mit meinem aktuellen MacPorts-Build?
Die Idee dabei ist, mehrere ipython
-Kernel zu installieren. Hier sind Anweisungen für anaconda. Wenn Sie anaconda nicht verwenden, habe ich vor kurzem eine Anleitung mit reinen Virtualenvs hinzugefügt.
Seit Version 4.1.0 enthält anaconda ein spezielles Paket nb_conda_kernels
, das conda-Umgebungen mit Notebook-Kerneln erkennt und sie automatisch registriert. Dies macht die Verwendung einer neuen Python-Version so einfach wie das Erstellen neuer conda-Umgebungen:
conda create -n py27 python=2.7 ipykernel
conda create -n py36 python=3.6 ipykernel
Nach einem Neustart von jupyter notebook sind die neuen Kernel über die grafische Oberfläche verfügbar. Bitte beachten Sie, dass neue Pakete explizit in die neuen Umgebungen installiert werden müssen. Der Abschnitt Managing environments in den conda's docs enthält weitere Informationen.
Benutzer, die nb_conda_kernels
nicht verwenden wollen oder noch ältere Versionen von anaconda benutzen, können die folgenden Schritte verwenden, um ipython Kernel manuell zu registrieren.
Konfigurieren Sie die python2.7
Umgebung:
conda create -n py27 python=2.7
conda activate py27
conda install notebook ipykernel
ipython kernel install --user
konfiguriere die python3.6
Umgebung:
conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user
Danach sollten Sie in der Lage sein, zwischen python2
und python3
wählen können, wenn Sie ein neues Notizbuch in der Schnittstelle erstellen.
Zusätzlich können Sie die Optionen --name
und --display-name
an ipython kernel install
übergeben, wenn Sie die Namen Ihrer Kernel ändern wollen. Siehe ipython kernel install --help
für weitere Informationen.
Mit einer aktuellen Version von Notebook/Jupyter können Sie einen Python3-Kernel erstellen. Nachdem Sie eine neue Notebook-Anwendung von der Kommandozeile mit Python 2 gestartet haben, sollten Sie einen Eintrag "Python 3" im Dropdown-Menü "Neu" sehen. Damit haben Sie ein Notizbuch, das Python 3 verwendet. Sie können also zwei Notizbücher mit unterschiedlichen Python-Versionen nebeneinander haben.
Erstellen Sie dieses Verzeichnis: mkdir -p ~/.ipython/kernels/python3
Erstellen Sie diese Datei ~/.ipython/kernels/python3/kernel.json
mit diesem Inhalt:
{
"display_name": "IPython (Python 3)",
"language": "python",
"argv": [
"python3",
"-c", "from IPython.kernel.zmq.kernelapp import main; main()",
"-f", "{connection_file}"
],
"codemirror_mode": {
"Version": 2,
"name": "ipython"
}
}
Starten Sie den Notebook-Server neu.
Wählen Sie "Python 3" aus dem Dropdown-Menü "Neu".
Arbeiten Sie mit einem Python 3 Notebook
Wählen Sie "Python 2" aus dem Dropdown-Menü "Neu".
Arbeiten Sie mit einem Python 2 Notebook
Es gibt eine Lösung, die es mir erlaubt, meine MacPorts-Installation beizubehalten, indem ich den Ipython-Kernelspec konfiguriere.
Anforderungen:
Für python 2.x:
$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
$ sudo ./ipython kernelspec install-self
Für python 3.x:
$ cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin
$ sudo ./ipython kernelspec install-self
Jetzt können Sie ein Ipython-Notizbuch öffnen und dann ein Python 2.x- oder ein Python 3.x-Notizbuch auswählen.