Mi piacerebbe configurare jupyter per permettermi di eseguire kernel python 2.7 e 3.4 contemporaneamente nello stesso momento in due quaderni diversi (o magari passare da uno all'altro in un unico notebook).(Come) Posso eseguire parallelamente i taccuini Python 2.7 e 3.4 in jupyter (ipython)?
(1) È possibile?
Mi chiedo poiché è stato suggerito in Using both Python 2.x and Python 3.x in IPython Notebook che ciò sarebbe possibile, ma non è stata fornita una risposta elaborata su come esattamente questo avrebbe funzionato.
Si può anche vedere in https://try.jupyter.org che in qualche modo sembra essere molto fattibile (e si può anche passare da un kernel Python 2 a un kernel Python 3). Quindi trovo ragionevole presumere che sia effettivamente possibile (ma per favore correggimi se sbaglio).
(2) Come è fatto?
risposte precedenti (per esempio in Open IPython Notebook 2.7 and 3.4 in Parallel) ha raccomandato di iniziare due diversi ipython server notebook in due differenti porte. Questo, ovviamente, è del tutto logico e possibile, ma lo NON risponde alla mia domanda.
sono riuscito a installare ipython
per Python 2 & 3. Ho poi avuto entrambi i kernel di presentarsi in jupyter
chiamando il seguente in ogni rispettivo ambiente python:
ipython kernelspec install-self
Questo ha creato kernel.json
file per me e ora potevo selezionare uno di essi per creare un nuovo blocco appunti in jupyter
. Esempio di kernel.json
per Python 2:
{
"display_name": "Python 2",
"language": "python",
"argv": [
"/usr/local/opt/python/bin/python2.7",
"-m",
"ipykernel",
"-f",
"{connection_file}"
]
}
Il problema è che quando comincio jupyter
da un ambiente python 2 (con $PYTHONPATH
definito), posso essere eseguito solo un kernel Python 2 (l'altro sarà in crash quando si apre il quaderno corrispondente). Lo stesso, quando avvio jupyter
da un ambiente python 3 (con $PYTHONPATH
definito). Questo in genere ha senso per me, ma mi piacerebbe sapere come avviare o configurare jupyter
per consentire l'esecuzione di entrambi i kernel dalla stessa istanza jupyter
e specificare ancora il mio specifico $PYTHONPATH
s per poter caricare i miei pacchetti.
Ho immaginato che questo fosse il mio problema reale: la predefinizione di $PYTHONPATH
prima di iniziare jupyter
. Così ho chiamato:
unset PYTHONPATH
ipython notebook
ora posso davvero eseguire entrambi i kernel (PY2 & 3) da una singola jupyter
esempio, ma non riesco a caricare i pacchetti di Python da specifiche directory locali. Immagino di poterlo fare manualmente all'interno del notebook con:
import sys
sys.path.append("/some/path/lib/python2.7/site-packages")
ma è davvero questo il modo in cui dovrei farlo? oppure posso configurare ulteriori directory che normalmente scrivo in $PYTHONPATH
da qualche altra parte (ad esempio, il file kernel.json
?
PS: Si prega di non chiedere il motivo per cui ho bisogno di questo - no, non mi davvero bisogno - ma ho ancora vorrei sapere se e come questo potrebbe essere possibile.
[EDIT]
Si prega di notare che non sarebbe comodo l'installazione di alcuni utilità di gestione python (come Anaconda) per realizzare tutto questo, (a meno che non è l'unico modo).
OK, ho risposto ad alcune delle mie domande iniziali lungo la strada, ma per favore fatemi sapere se potete dare una mano con la parte '$ PYTHONPATH' :) Grazie! – Chris