Utiliser à la fois Python 2.x et Python 3.x dans IPython Notebook

J'utilise les notebooks IPython et j'aimerais pouvoir choisir de créer un notebook python 2.x ou 3.x dans IPython.

Au départ, j'avais Anaconda. Avec Anaconda, une variable d'environnement globale devait être modifiée pour sélectionner la version de python souhaitée, puis IPython pouvait être lancé. Ce n'est pas ce que je recherchais, j'ai donc désinstallé Anaconda et j'ai maintenant mis en place ma propre installation en utilisant MacPorts et PiP. Il semble que je doive toujours utiliser

port select --set python <python version> 

pour basculer entre python 2.x et 3.x, ce qui n'est pas mieux que la solution d'Anaconda.

Existe-t-il un moyen de sélectionner la version de python que l'on souhaite utiliser après avoir démarré un notebook IPython, de préférence avec ma construction MacPorts actuelle ?

L'idée ici est d'installer plusieurs noyaux ipython. Voici les instructions pour anaconda. Si vous n'utilisez pas anaconda, j'ai récemment ajouté des instructions pour utiliser des virtualenvs purs.

Anaconda >= 4.1.0

Depuis la version 4.1.0, anaconda inclut un paquetage spécial nb_conda_kernels qui détecte les environnements conda avec des noyaux notebook et les enregistre automatiquement. Cela rend l'utilisation d'une nouvelle version de python aussi facile que la création de nouveaux environnements conda :

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

Après un redémarrage de jupyter notebook, les nouveaux noyaux sont disponibles via l'interface graphique. Veuillez noter que les nouveaux paquets doivent être explicitement installés dans les nouveaux environnements. La section Managing environments dans la documentation de conda's fournit de plus amples informations.

Enregistrement manuel des noyaux

Les utilisateurs qui ne veulent pas utiliser nb_conda_kernels ou qui utilisent encore d'anciennes versions d'anaconda peuvent utiliser les étapes suivantes pour enregistrer manuellement les noyaux ipython.

Configurez l'environnement python2.7 :

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

configurer l'environnement python3.6 :

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

Après cela, vous devriez être capable de choisir entre python2 et python3. et python3 lors de la création d'un nouveau notebook dans l'interface.

De plus, vous pouvez passer les options --name et --display-name à ipython kernel install si vous voulez changer les noms de vos noyaux. Voir ipython kernel install --help pour plus d'informations.

Commentaires (37)

Avec une version actuelle de Notebook/Jupyter, vous pouvez créer un [noyau Python3][1]. Après avoir lancé une nouvelle application Notebook à partir de la ligne de commande avec Python 2, vous devriez voir une entrée "Python 3" dans le menu déroulant "New". Cela vous donne un notebook qui utilise Python 3. Vous pouvez donc avoir deux notebooks côte à côte avec des versions différentes de Python.

Les détails

  1. Créez ce répertoire : mkdir -p ~/.ipython/kernels/python3

  2. Créez ce fichier ~/.ipython/kernels/python3/kernel.json avec ce contenu :

     {
         "display_name" : "IPython (Python 3)&quot ;,
         "language" : "python&quot ;,
         "argv" : [
             "python3&quot ;,
             "-c&quot ;, "from IPython.kernel.zmq.kernelapp import main ; main()&quot ;,
             "-f&quot ;, "{fichier_connexion}&quot ;
         ],
         "codemirror_mode" : {
             "version" : 2,
             "name" : "ipython&quot ;
         }
     }
  3. Redémarrez le serveur notebook.

  4. Sélectionnez "Python 3" dans le menu déroulant "New".

  5. Travailler avec un notebook Python 3

  6. Sélectionnez "Python 2" dans le menu déroulant "Nouveau". 7.

  7. Travailler avec un Notebook Python 2

[1] : http://jupyter.cs.brynmawr.edu/hub/dblank/public/Jupyter%20Help.ipynb#1.4.2-Enable-Python-3-kernel

Commentaires (8)
Solution

Il existe une solution qui me permet de conserver mon installation MacPorts en configurant le kernelspec Ipython.

Conditions requises :

  • MacPorts est installé dans le répertoire habituel /opt
  • python 2.7 est installé via macports
  • python 3.4 est installé via macports
  • Ipython est installé pour python 2.7
  • Ipython est installé pour python 3.4

Pour python 2.x :

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

Pour python 3.x :

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

Vous pouvez maintenant ouvrir un bloc-notes Ipython, puis choisir un bloc-notes python 2.x ou python 3.x.

[!Choisissez votre python !][1]][1]

[1] : http://i.stack.imgur.com/45bUZ.png

Commentaires (5)