Utilizzo di Python 2.xe Python 3.x in Notebook IPython


255

Uso i notebook IPython e vorrei essere in grado di selezionare per creare un notebook Python 2.xo 3.x in IPython.

Inizialmente avevo Anaconda. Con Anaconda è stato necessario modificare una variabile d'ambiente globale per selezionare la versione di Python desiderata e quindi è possibile avviare IPython. Non è quello che cercavo, quindi ho disinstallato Anaconda e ora ho impostato la mia installazione usando MacPorts e PiP. Sembra che devo ancora usare

port select --set python <python version> 

per alternare tra Python 2.xe 3.x. che non è migliore della soluzione di anaconda.

C'è un modo per selezionare quale versione di Python vuoi usare dopo aver avviato un notebook IPython, preferibilmente con la mia attuale build MacPorts?


Risposte:


336

L'idea qui è di installare più ipythonkernel. Ecco le istruzioni per l'anaconda. Se non stai usando anaconda, di recente ho aggiunto istruzioni usando pure virtualenvs.

Anaconda> = 4.1.0

Dalla versione 4.1.0, anaconda include un pacchetto speciale nb_conda_kernelsche rileva ambienti conda con kernel per notebook e li registra automaticamente. Ciò rende l'utilizzo di una nuova versione di Python semplice come la creazione di nuovi ambienti conda:

conda create -n py27 python=2.7 ipykernel
conda create -n py36 python=3.6 ipykernel

Dopo il riavvio del notebook jupyter, i nuovi kernel sono disponibili tramite l'interfaccia grafica. Si noti che i nuovi pacchetti devono essere esplicitamente installati nei nuovi ambienti. La sezione Gestione degli ambienti nei documenti conda fornisce ulteriori informazioni.

Registrazione manuale dei kernel

Gli utenti che non desiderano utilizzare nb_conda_kernelso utilizzano ancora versioni precedenti di anaconda possono utilizzare i seguenti passaggi per registrare manualmente i kernel ipython.

configurare l' python2.7ambiente:

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

configurare l' python3.6ambiente:

conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user

Dopodiché dovresti essere in grado di scegliere tra python2
e python3quando si crea un nuovo notebook nell'interfaccia.

Inoltre, puoi passare le opzioni --namee --display-namea ipython kernel installse vuoi cambiare i nomi dei tuoi kernel. Vedi ipython kernel install --helpper maggiori informazioni.


La tua soluzione assomiglia molto alla soluzione che ho usato e in linea di principio mi aspetto che funzioni. Dato che ho già disinstallato anaconda e ho funzionato, non sarò in grado di verificarlo.
deltap,

9
Se vuoi configurare i kernelspec senza richiedere root, puoi farlo ipython kernelspec install-self --userper installarli per l'utente corrente.
Thomas K,

1
L'ho immaginato! La tua risposta ha aiutato! dropbox.com/s/6ayqf55ctkv2xgk/…
Programmatore intelligente

7
L'elemento chiave è che devi INSTALLARE nb_conda_kernels non è arrivato con la mia Anaconda iniziale! Grazie!
dartdog

1
@cel, in effetti l'ambiente da cui inizio jupyter non ha il pacchetto nb_conda_kernels installato di default. Non mi sono preso il tempo di leggere tutti i commenti: forse potresti modificare la tua risposta e includere il remak di Dartdog.
Antoine Gautier,

276

Se stai eseguendo Jupyter su Python 3, puoi configurare un kernel Python 2 in questo modo:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

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


52
Cambia '2' per '3' se hai già configurato Python2 e hai bisogno di Python3. Non capisco perché questa non sia la risposta migliore, vince sicuramente dal rasoio di Occam e ha funzionato per me.
parole per il

6
Funziona perfettamente. Dovrebbe essere davvero la prima risposta.
JSmyth,

2
Il comando python2 è incluso in Python stesso? Per favore, dai qualche spiegazione di questa risposta in modo elaborato. :)
verystrongjoe,

3
funziona, ma non è collegato al mio sistema Python 2 con pacchetti aggiuntivi. Esiste un modo per collegarsi a un binario / eseguibile python esistente?
Rutger Hofste,

1
Funziona perfettamente con Win10, basta sostituirlo python2con your\path\to\python(2).exe.
Lucien,

42

Queste istruzioni spiegano come installare un kernel python2 e python3 in ambienti virtuali separati per utenti non anaconda. Se stai usando anaconda, per favore trova la mia altra risposta per una soluzione su misura per anaconda.

Presumo che tu abbia già jupyter notebookinstallato.


Per prima cosa assicurati di avere ae python2un python3interprete con pipdisponibili.

Su Ubuntu installeresti questi:

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

Quindi preparare e registrare gli ambienti del kernel

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

Per semplificare le cose, potresti voler aggiungere alias di shell per il comando di attivazione al tuo file di configurazione della shell. A seconda del sistema e della shell utilizzati, questo può essere ad es ~/.bashrc. ~/.bash_profileOppure~/.zshrc

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

Dopo aver riavviato la shell, è ora possibile installare nuovi pacchetti dopo aver attivato l'ambiente che si desidera utilizzare.

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

o

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

seguito da questo punto, installato panda, avviato jupyter, passato al kernel py3: importazione panda fallita con errore "non trovato". Mi sta facendo impazzire
user1255933

1
@ user1255933, ciò è probabilmente dovuto a un'installazione con la versione pip errata. Ciò può accadere se l'attivazione dell'ambiente di destinazione non è riuscita o non contiene una versione pip. La risposta potrebbe essere interessante qui: stackoverflow.com/questions/32680081/… .
cel

Grazie per le istruzioni sull'uso del modo non anaconda per installare il kernel
mdivk,

37

Con una versione corrente di Notebook / Jupyter, è possibile creare un kernel Python3 . Dopo aver avviato una nuova applicazione per notebook dalla riga di comando con Python 2, nel menu a discesa "Nuovo" dovresti vedere una voce "Python 3". Questo ti dà un notebook che utilizza Python 3. In questo modo puoi avere due notebook affiancati con diverse versioni di Python.

I dettagli

  1. Crea questa directory: mkdir -p ~/.ipython/kernels/python3
  2. Crea questo file ~/.ipython/kernels/python3/kernel.jsoncon questo contenuto:

    {
        "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. Riavvia il server notebook.

  4. Seleziona "Python 3" dal menu a discesa "Nuovo"
  5. Lavora con un notebook Python 3
  6. Seleziona "Python 2" dal menu a discesa "Nuovo"
  7. Lavora con un notebook Python 2

Questo è fantastico e sto cercando di farlo funzionare, ma potresti specificare come iniziare jupyterin questo scenario (o devo eseguire ipython notebooko ipython3 notebook). In questo momento posso solo eseguire l'uno o l'altro (con i rispettivi ambienti, ma vedo entrambi i kernel elencati all'interno jupyter. Potresti forse espandere la tua risposta per includere come iniziare in jupytermodo che io possa correre python2e python3fianco a fianco? Grazie!
Chris,

1
Ok, penso di averlo capito: ho dovuto adattare il kernel.jsonfile all'interno ~/Library/Jupyter/kernels/python3/(su OS X) e aggiungere gli argomenti menzionati nel file collegato.
Chris,

@Chris Sì, mentre la descrizione dietro il collegamento è data in un Notebook IPython, potrebbe essere fatta in un editor. Basta creare o modificare un file con un determinato nome in un determinato percorso e nel contenuto mostrato. Sono contento di aver risolto il tuo problema.
Mike Müller,

Consiglierei di modificare la risposta per includere i dettagli da quel link. Le risposte non dovrebbero tenere nascosta la parte più importante "dietro" un collegamento.
Chris,

1
@Chris Aggiunti i dettagli dal link.
Mike Müller,

22

È disponibile una soluzione che mi consente di mantenere l'installazione del mio MacPorts configurando il kernel di Ipython.

Requisiti:

  • MacPorts è installato nella solita directory / opt
  • python 2.7 è installato tramite macports
  • python 3.4 è installato tramite macports
  • Ipython è installato per Python 2.7
  • Ipython è installato per Python 3.4

Per python 2.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
$ sudo ./ipython kernelspec install-self

Per python 3.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin
$ sudo ./ipython kernelspec install-self

Ora puoi aprire un notebook Ipython e quindi scegliere un notebook python 2.xo un python 3.x.

Scegli il tuo pitone!


Potete per favore confermare che è possibile eseguire python2e python3kernel notebook fianco a fianco nella stessa jupyteristanza? In questo caso, come si inizia esattamente jupytera non avere percorsi in conflitto? Attualmente posso solo eseguire python2o python3codificare impostando in $PATH $PYTHONPATHanticipo l'ambiente appropriato . Posso evitarlo in qualche modo?
Chris,

Posso eseguire sia i quaderni del kernel python2 che python3.
deltap,

Come inizi jupyter(dato che è installato per python 2.7e per python 3.4) Hai definito $ PYTHONPATH o hai acquisito un ambiente virtuale? Stai solo chiamando ipython notebook? In tal caso, qual ipythonè quello riferito a - quello installato per 2.7 o 3.4?
Chris,

Sto solo chiamando python notebook. which ipythonmostra che sta puntando a/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap

Bene, ho capito il mio problema e aveva a che fare con un predefinito $PYTHONPATH, il che rende difficile cambiare kernel. Ho dovuto unset PYTHONPATHprima di iniziare ipythone ora funziona.
Chris,

18

Dalla mia installazione di Linux ho fatto:

sudo ipython2 kernelspec install-self

E ora il mio python 2 è tornato nell'elenco.

Riferimento:

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


AGGIORNARE:

Il metodo sopra è ora deprecato e verrà abbandonato in futuro. Il nuovo metodo dovrebbe essere:

sudo ipython2 kernel install


2
Odio incollare casualmente i comandi nella mia installazione di Ubuntu, ma questo ha funzionato per me.
Joseph,

1
Dovrebbe essere la risposta scelta.
9

1
In breve e al punto, ho applicato questa soluzione su Mac OS X, funziona senza problemi.
Konrad,

1
Ho provato tutte le risposte. Ma questo ha funzionato per me. Provalo se sei su Ubuntu.
sinsuren,

1
E dove ottengo ipython2?
sudo,

5

Di seguito sono riportati i passaggi per aggiungere il kernel python2 al notebook jupyter ::

apri un terminale e crea un nuovo ambiente python 2: conda create -n py27 python=2.7

attivare l'ambiente: Linux source activate py27o Windowsactivate py27

installa il kernel in env: conda install notebook ipykernel

installa il kernel all'esterno di env: ipython kernel install --user

chiudi l'env: source deactivate

Sebbene una risposta tardiva speri che qualcuno lo trovi utile: p


Questo non aggiunge nulla oltre a quanto già chiaramente affermato nella risposta di @ cel .
Merv

3

Utilizzare sudo pip3 install jupyterper installare jupyter per python3 e sudo pip install jupyterper installare jupyter notebook per python2. Quindi, puoi chiamare il ipython kernel installcomando per abilitare entrambi i tipi di notebook tra cui scegliere nel notebook jupyter.


1

Ho guardato queste informazioni eccellenti e poi mi sono chiesto , da allora

  1. ho installato python2, python3 e IPython,
  2. ho installato PyCharm,
  3. PyCharm utilizza IPython per la sua console Python,

se PyCharm avrebbe usato

  1. IPython-py2 quando Menu> File> Impostazioni> Progetto> Interprete progetto == py2 AND
  2. IPython-py3 quando Menu> File> Impostazioni> Progetto> Interprete progetto == py3

RISPOSTA: Sì!

PS ho installato anche Python Launcher per Windows.


0

Sotto Windows 7 avevo installato anaconda e anaconda3. Sono entrato \Users\me\anaconda\Scriptse giustiziato

sudo .\ipython kernelspec install-self

poi sono entrato \Users\me\anaconda3\Scriptse giustiziato

sudo .\ipython kernel install

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

Dopo aver avviato jupyter notebook(in anaconda3) ho ottenuto un menu a discesa pulito nell'angolo in alto a destra sotto "Nuovo" che mi permette di scegliere tra i kernel Python 2 e Python 3.


0
  • Se si esegue anaconda in ambiente virtuale.
  • E quando crei un nuovo notebook ma non sto mostrando di selezionare il kernel dell'ambiente virtuale.
  • Quindi devi impostarlo nel ipykernel usando il seguente comando
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.