Verwenden von Python 2.x und Python 3.x in IPython Notebook


255

Ich verwende IPython-Notizbücher und möchte in der Lage sein, ein 2.x- oder 3.x-Python-Notizbuch in IPython zu erstellen.

Ich hatte anfangs Anaconda. Bei Anaconda musste eine globale Umgebungsvariable geändert werden, um die gewünschte Python-Version auszuwählen, und dann konnte IPython gestartet werden. Dies 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 noch verwenden muss

port select --set python <python version> 

um zwischen python 2.x und 3.x umzuschalten. Das ist nicht besser als die Anaconda-Lösung.

Gibt es eine Möglichkeit, auszuwählen, welche Python-Version Sie nach dem Starten eines IPython-Notebooks verwenden möchten, vorzugsweise mit meinem aktuellen MacPorts-Build?


Antworten:


336

Die Idee hier ist, mehrere ipythonKernel zu installieren . Hier sind Anweisungen für Anakonda. Wenn Sie keine Anakonda verwenden, habe ich kürzlich Anweisungen mit reinen virtuellen Umgebungen hinzugefügt.

Anaconda> = 4.1.0

Seit Version 4.1.0 enthält nb_conda_kernelsanaconda ein spezielles Paket , das Conda-Umgebungen mit Notebook-Kerneln erkennt und 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 des Jupyter-Notebooks sind die neuen Kernel über die grafische Oberfläche verfügbar. Bitte beachten Sie, dass neue Pakete explizit in den neuen Umgebungen installiert werden müssen. Das Verwalten von Umgebungen Abschnitt in Conda der docs liefert weitere Informationen.

Manuelles Registrieren von Kerneln

Benutzer, die nb_conda_kernelsältere Versionen von Anaconda nicht verwenden möchten oder noch verwenden möchten, können die folgenden Schritte ausführen, um Ipython-Kernel manuell zu registrieren.

Konfigurieren Sie die python2.7Umgebung:

conda create -n py27 python=2.7
conda activate py27
conda install notebook ipykernel
ipython kernel install --user

Konfigurieren Sie die python3.6Umgebung:

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 python3beim Erstellen eines neuen Notizbuchs in der Benutzeroberfläche zu wählen .

Außerdem können Sie die Optionen --nameund --display-namean übergeben, ipython kernel installwenn Sie die Namen Ihrer Kernel ändern möchten. Siehe ipython kernel install --helpfür weitere Informationen.


Ihre Lösung ähnelt stark der Lösung, die ich letztendlich verwendet habe, und im Prinzip würde ich erwarten, dass sie funktioniert. Da ich anaconda bereits deinstalliert habe und dies funktioniert hat, kann ich es nicht überprüfen.
Deltap

9
Wenn Sie die Kernelspecs einrichten möchten, ohne dass root erforderlich ist, können Sie ipython kernelspec install-self --usersie für den aktuellen Benutzer installieren.
Thomas K

1
Ich habe es herausgefunden! Ihre Antwort hat geholfen! dropbox.com/s/6ayqf55ctkv2xgk/…
Clever Programmer

7
Der Schlüsselpunkt ist, dass Sie nb_conda_kernels INSTALLIEREN müssen, es kam nicht mit meiner anfänglichen Anaconda! Vielen Dank!
Dartdog

1
@cel, in der Tat ist in der Umgebung, in der ich jupyter starte, das Paket nb_conda_kernels nicht standardmäßig installiert. Ich habe mir nicht die Zeit genommen, alle Kommentare zu lesen: Vielleicht könnten Sie Ihre Antwort bearbeiten und Dartdogs Remak hinzufügen.
Antoine Gautier

276

Wenn Sie Jupyter unter Python 3 ausführen , können Sie einen Python 2-Kernel wie folgt einrichten:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

http://ipython.readthedocs.io/en/stable/install/kernel_install.html


52
Schalten Sie die '2' gegen '3', wenn Sie Python2 bereits eingerichtet haben und Python3 benötigen. Ich verstehe nicht, warum dies nicht die beste Antwort ist, es gewinnt definitiv mit Occams Rasiermesser und es hat bei mir funktioniert.
Worte für den

6
Funktioniert perfekt. Sollte in der Tat die erste Antwort sein.
JSmyth

2
Der Befehl python2 ist in Python selbst enthalten. Bitte erläutern Sie diese Antwort ausführlich. :)
verystrongjoe

3
Dies funktioniert, ist jedoch nicht mit zusätzlichen Paketen mit meinem System Python 2 verknüpft. Gibt es eine Möglichkeit, eine Verknüpfung zu einer vorhandenen Python-Binärdatei / ausführbaren Datei herzustellen?
Rutger Hofste

1
Funktioniert perfekt in win10, ersetzen Sie einfach python2mit your\path\to\python(2).exe.
Lucien

42

In diesen Anweisungen wird erläutert, wie Sie einen Python2- und Python3-Kernel in separaten virtuellen Umgebungen für Nicht-Anaconda-Benutzer installieren. Wenn Sie Anaconda verwenden, finden Sie meine andere Antwort für eine Lösung, die direkt auf Anaconda zugeschnitten ist.

Ich gehe davon aus, dass Sie bereits jupyter notebookinstalliert haben.


Stellen Sie zunächst sicher, dass Sie einen python2und einen python3Dolmetscher zur pipVerfügung haben.

Auf Ubuntu würden Sie diese installieren durch:

sudo apt-get install python-dev python3-dev python-pip python3-pip

Bereiten Sie als Nächstes die Kernelumgebungen vor und registrieren Sie sie

python -m pip install virtualenv --user

# configure python2 kernel
python -m virtualenv -p python2 ~/py2_kernel
source ~/py2_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py2 --user
deactivate

# configure python3 kernel
python -m virtualenv -p python3 ~/py3_kernel
source ~/py3_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py3 --user
deactivate

Zur Vereinfachung möchten Sie möglicherweise Shell-Aliase für den Aktivierungsbefehl zu Ihrer Shell-Konfigurationsdatei hinzufügen. Je nach System und Shell Sie verwenden, dies kann zB ~/.bashrc, ~/.bash_profileoder~/.zshrc

alias kernel2='source ~/py2_kernel/bin/activate'
alias kernel3='source ~/py3_kernel/bin/activate'

Nach dem Neustart Ihrer Shell können Sie jetzt neue Pakete installieren, nachdem Sie die gewünschte Umgebung aktiviert haben.

kernel2
python -m pip install <pkg-name>
deactivate

oder

kernel3
python -m pip install <pkg-name>
deactivate

folgte dem auf den Punkt, installierte Pandas, startete jupyter, wechselte zum py3-Kernel: Import-Pandas schlugen mit dem Fehler 'nicht gefunden' fehl. Es macht mich verrückt
user1255933

1
@ user1255933, dies ist wahrscheinlich auf eine Installation mit der falschen Pip-Version zurückzuführen. Dies kann passieren, wenn die Aktivierung der Zielumgebung fehlgeschlagen ist oder keine Pip-Version enthält. Vielleicht finden Sie meine Antwort hier interessant: stackoverflow.com/questions/32680081/… .
Cel

Vielen Dank für die Anweisung zur Verwendung der Nicht-Anaconda-Methode zur Installation des Kernels
mdivk

37

Mit einer aktuellen Version von Notebook / Jupyter können Sie einen Python3-Kernel erstellen . Nach dem Starten einer neuen Notebook-Anwendung über die Befehlszeile mit Python 2 sollte im Dropdown-Menü „Neu“ der Eintrag „Python 3“ angezeigt werden. Dadurch erhalten Sie ein Notizbuch, das Python 3 verwendet. Sie können also zwei Notizbücher nebeneinander mit verschiedenen Python-Versionen haben.

Die Details

  1. Erstellen Sie dieses Verzeichnis: mkdir -p ~/.ipython/kernels/python3
  2. Erstellen Sie diese Datei ~/.ipython/kernels/python3/kernel.jsonmit folgendem 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"
        }
    }
  3. Starten Sie den Notebook-Server neu.

  4. Wählen Sie „Python 3“ aus dem Dropdown-Menü „Neu“.
  5. Arbeiten Sie mit einem Python 3-Notizbuch
  6. Wählen Sie „Python 2“ aus dem Dropdown-Menü „Neu“.
  7. Arbeiten Sie mit einem Python 2-Notizbuch

Das ist großartig und ich versuche, das jupyterzum Laufen zu bringen, aber können Sie angeben, wie Sie in diesem Szenario beginnen (ich muss entweder ausführen ipython notebookoder ipython3 notebook). Im Moment kann ich nur läuft eine oder die andere (mit ihren jeweiligen Umgebungen, aber ich habe beide Kerne aufgeführt innen sehen jupyter. Könnten Sie vielleicht Ihre Antwort erweitern einschließen , wie zu beginnen , jupyterso dass ich laufen kann python2und python3Side-by-Side? Vielen Dank!
Chris

1
Ok, ich glaube, ich habe es herausgefunden - ich musste die kernel.jsonDatei im Inneren ~/Library/Jupyter/kernels/python3/(unter OS X) anpassen und die in der verknüpften Datei genannten Argumente hinzufügen.
Chris

@Chris Ja, während die Beschreibung hinter dem Link in einem IPython-Notizbuch enthalten ist, kann dies in einem Editor erfolgen. Erstellen oder ändern Sie einfach eine Datei mit einem bestimmten Namen an einem bestimmten Pfad und im angezeigten Inhalt. Schön, dass Sie Ihr Problem gelöst haben.
Mike Müller

Ich würde empfehlen, Ihre Antwort so zu bearbeiten, dass sie die Details dieses Links enthält. Antworten sollten den wichtigsten Teil nicht "hinter" einem Link verbergen.
Chris

1
@Chris Die Details aus dem Link wurden hinzugefügt.
Mike Müller

22

Es ist eine Lösung verfügbar, mit der ich meine MacPorts-Installation durch Konfigurieren der Ipython-Kernelspezifikation beibehalten kann.

Bedarf:

  • MacPorts wird im üblichen Verzeichnis / opt installiert
  • Python 2.7 wird über Macports installiert
  • Python 3.4 wird über Macports installiert
  • Ipython ist für Python 2.7 installiert
  • Ipython ist für Python 3.4 installiert

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.

Wähle deine Python!


Können Sie bitte bestätigen, dass Sie Notebooks in derselben Instanz nebeneinander ausführen python2und python3kerneln können jupyter? Wie genau beginnen Sie in diesem Fall, jupyterkeine widersprüchlichen Pfade zu haben? Ich kann derzeit nur entweder ausführen python2oder python3codieren, indem ich $PATH $PYTHONPATHzuvor die entsprechende Umgebung eingerichtet habe. Kann ich das irgendwie vermeiden?
Chris

Ich kann entweder Python2- oder Python3-Kernel-Notebooks ausführen.
Deltap

Wie fangen Sie an jupyter( vorausgesetzt , es ist für python 2.7und für installiert python 3.4)? Haben Sie $ PYTHONPATH definiert oder eine virtuelle Umgebung bezogen? Rufen Sie einfach ipython notebook? Wenn ja, auf was ipythonbezieht sich das - das für 2.7 oder 3.4 installierte?
Chris

Ich rufe nur an python notebook. which ipythonzeigt, dass es auf/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
Deltap

Okay, ich habe mein Problem herausgefunden und es hatte mit einem vordefinierten Problem zu tun $PYTHONPATH, was das Wechseln der Kernel schwierig macht. Ich musste unset PYTHONPATHvor dem Start ipythonund jetzt funktioniert es.
Chris

18

Von meiner Linux-Installation habe ich:

sudo ipython2 kernelspec install-self

Und jetzt ist mein Python 2 wieder auf der Liste.

Referenz:

http://ipython.readthedocs.org/en/latest/install/kernel_install.html


AKTUALISIEREN:

Die oben beschriebene Methode ist jetzt veraltet und wird in Zukunft eingestellt. Die neue Methode sollte sein:

sudo ipython2 kernel install


2
Ich hasse es, Befehle zufällig in meine Ubuntu-Installation einzufügen, aber das hat bei mir funktioniert.
Joseph

1
Sollte die gewählte Antwort sein.
e9t

1
Kurz und auf den Punkt gebracht, ich habe diese Lösung auf Mac OS X angewendet, funktioniert ohne Probleme.
Konrad

1
Ich habe alle Antworten ausprobiert. Aber das hat bei mir funktioniert. Probieren Sie es aus, wenn Sie auf Ubuntu sind.
Sinsuren

1
Und wo bekomme ich ipython2?
Sudo

5

Im Folgenden finden Sie die Schritte zum Hinzufügen des python2-Kernels zu jupyter notebook ::

Öffnen Sie ein Terminal und erstellen Sie eine neue Python 2-Umgebung: conda create -n py27 python=2.7

Aktivieren Sie die Umgebung: Linux source activate py27oder Windowsactivate py27

Installieren Sie den Kernel in der Umgebung: conda install notebook ipykernel

Installieren Sie den Kernel für außerhalb der Umgebung: ipython kernel install --user

schließe die Umgebung: source deactivate

Obwohl eine späte Antwort hofft, dass jemand sie nützlich findet: p


Dies fügt nichts hinzu, was über das hinausgeht, was bereits in der Antwort von @ cel klar angegeben wurde .
Merv

3

Verwenden Sie diese sudo pip3 install jupyterOption, um jupyter für python3 und sudo pip install jupyterjupyter notebook für python2 zu installieren. Anschließend können Sie den ipython kernel installBefehl aufrufen , um die Auswahl beider Notizbuchtypen im Jupyter-Notizbuch zu aktivieren.


1

Ich habe mir diese exzellenten Infos angesehen und mich seitdem gefragt

  1. Ich habe Python2, Python3 und IPython alle installiert,
  2. Ich habe PyCharm installiert,
  3. PyCharm verwendet IPython für seine Python-Konsole.

wenn PyCharm verwenden würde

  1. IPython-py2 unter Menü> Datei> Einstellungen> Projekt> Projektinterpreter == py2 UND
  2. IPython-py3 unter Menü> Datei> Einstellungen> Projekt> Projektinterpreter == py3

ANTWORT: Ja!

PS Ich habe Python Launcher für Windows installiert.


0

Unter Windows 7 hatte ich Anaconda und Anaconda3 installiert. Ich ging hinein \Users\me\anaconda\Scriptsund hingerichtet

sudo .\ipython kernelspec install-self

dann ging ich hinein \Users\me\anaconda3\Scriptsund hingerichtet

sudo .\ipython kernel install

(Ich habe jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec.)

Nach dem Start jupyter notebook(in anaconda3) wurde in der oberen rechten Ecke unter "Neu" ein übersichtliches Dropdown-Menü angezeigt, in dem ich zwischen Python 2 oder Python 3-Kerneln wählen konnte.


0
  • Wenn Sie Anaconda in einer virtuellen Umgebung ausführen.
  • Und wenn Sie ein neues Notizbuch erstellen, aber nicht angezeigt wird, um den Kernel der virtuellen Umgebung auszuwählen.
  • Dann müssen Sie es mit dem folgenden Befehl in den ipykernel setzen
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.