web-dev-qa-db-fra.com

Comment choisir votre environnement conda dans Jupyter Notebook

J'ai installé Anaconda 5.3 avec Python 3.7 (environnement racine).
Après cela, j'ai créé un nouvel environnement (py36) en utilisant Python 3.6

J'ai activé le nouvel environnement avec activate py36
conda env list montre que l'environnement est actif.

Mais quand je démarre Jupyter Notebook (à partir de l'invite Anaconda avec jupyter notebook), il semble utiliser l'environnement racine, pas l'environnement activé.

Comment puis-je utiliser Jupyter Notebook avec le nouvel environnement de création (py36)?

6
Rene

Comme @ Ista mentionné, la documentation donne une solution simple en utilisant des extensions de notebook.

conda install nb_conda

Après l'installation, vous avez la possibilité dans Jupyter Notebook de "Changer le noyau" dans le menu "Kernel" de votre Jupyter Notebook.

1
Rene

J'ai réussi à trouver une solution à cela dans un problème similaire. Le fait est que IPython n'est pas compatible avec virtualenv , donc une solution de contournement (celle que j'ai trouvée la plus confortable) consiste à spécifier des noyaux IPython personnalisés pour éviter d'avoir une installation de Jupyter Notebook pour chaque virtualenv (ou environnements anaconda, dans votre cas).

Jupyter s'appuie sur certains "noyaux" (définitions de l'endroit où trouver le python binaire) qui sont stockés quelque part dans votre système d'exploitation. Ces fichiers ressemblent à ceci:

{
 "display_name": "NameOfTheKernel", 
 "language": "python", 
 "argv": [
  "/usr/bin/python", 
  "-m", 
  "ipykernel_launcher", 
  "-f", 
  "{connection_file}"
 ]

/usr/bin/python est le chemin vers le binaire python qui sera exécuté. Cependant, comme ces noyaux sont définis quelque part dans votre ordinateur par Jupyter, ils ne sont pas mis à jour lorsque vous installez d'autres environnements (qui est le cas pour anaconda ou virtualenv). J'ai trouvé que le moyen le plus simple est de définir un noyau personnalisé pour chaque environnement que vous utilisez. De plus, cela supprime la nécessité d'activer l'environnement à chaque fois que vous souhaitez l'utiliser, car il est chargé directement.

L'idée est de définir un noyau personnalisé pour que Jupyter puisse "voir" l'environnement que vous avez créé avec anaconda. Pour ce faire, exécutez la ligne suivante dans bash:

ipython kernel install --user --name=NameOfTheKernel

Le "NameOfTheKernel" n'a pas vraiment d'importance. Si vous n'avez pas le package ipython, installez-le avec pip, anaconda, via Sudo apt install ou peu importe.

Ce que cette ligne va faire est de définir un noyau personnalisé qui sera détecté par jupyter. À des fins d'illustration, dans Ubuntu, cela sera stocké dans le dossier /home/USERNAME/.local/share/jupyter avec cette structure de données:

/home/USERNAME/.local/share/jupyter/kernels/
└── nameofthekernel
    ├── kernel.json
    ├── logo-32x32.png
    └── logo-64x64.png

Une fois le noyau installé, vous devez:

1) Sachez où votre environnement a été installé par anaconda. Un moyen simple de le faire est d'activer votre environnement dans anaconda et ensuite d'écrire "quel python" dans le terminal. Cela montrera le chemin complet vers le binaire.

2) Écrivez ce chemin dans le noyau jupyter que vous venez de créer. Par exemple. en utilisant pluma:

pluma /home/USERNAME/.local/share/jupyter/kernels/nameofthekernel/kernel.json

Ensuite, vous remplacez le chemin du binaire python que vous avez installé avec anaconda où /usr/bin/python est.

Après cela, si Jupyter était en cours d'exécution, redémarrez-le. De cette façon, la prochaine fois que vous ouvrirez Jupyter, vous pourrez changer le noyau (dans les cahiers, l'un des onglets dans la partie supérieure) et vous utiliserez votre environnement et tout ce qui sera installé à côté de cet environnement.

[TL; DR] Je l'ai fait avec pip , mais les étapes pour anaconda seront plus ou moins les mêmes. Les étapes sont les suivantes:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

Ou, si vous travaillez avec des environnements:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

[~ # ~] méfiez-vous [~ # ~] : I DID N'INSTALLEZ PAS CONDA POUR TESTER LA SOLUTION, = SO LES CHEMINS MENANT AU RÉEL PYTHON LES BINAIRES PEUVENT CHANGER. La procédure est cependant la même).

0
Guillermo Jiménez