79 votes

cahier jupyter exécutant le noyau dans un environnement différent

Je me suis mis dans une sorte d'horrible virtualenv mess. De l'aide?!

J'ai de gérer les environnements avec conda. Jusqu'à récemment, je n'avais qu'une python2 jupyter portable noyau, mais j'ai décidé de me traîner coups de pied et de crier dans le 21e siècle et installé un python3 noyau, je ne sais plus comment je l'ai fait.

Mon principal (anaconda) python par défaut 2.7.

Donc ici, je suis, joyeusement, essayez d'utiliser de belles soupe de l'intérieur de mon nouveau brillant python3 noyau, et je ne semble pas être en mesure de faire quelque chose pour obtenir à n'importe quel environnement il s'agit de trouver les paquets dans. Viz (de portable):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

Ok, très bien, je vais l'installer à l'aide du shell de la magie. Droit? Droit?

! pip install bs4

--> Collecting bs4
  Downloading bs4-0.0.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4)
[...]
Successfully built bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

Oh non. Est-il penser que je suis dans un 2.7 env, même si je suis à court d'un python3 noyau? Ça va pas le faire.

! conda info --envs
--> # conda environments:
#
flaskenv                 /Users/[MY-USER]/anaconda/envs/flaskenv
mesa                     /Users/[MY-USER]/anaconda/envs/mesa
py35                     /Users/[MY-USER]/anaconda/envs/py35
root                  *  /Users/[MY-USER]/anaconda

Ok, je peux résoudre ce problème. Un de ceux est de 3,5 env.

! source activate py35
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH

! conda install beautifulsoup4
--> Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /Users/[MY-USER]/anaconda:
#
beautifulsoup4            4.4.1                    py27_0  

concernant les...

! pip install bs4
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages

de plus, concernant...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

ARRGH!!! headdesk vais-je avoir à tuer le noyau afin de la résoudre (et de ré-exécuter un peu de travail)? Tue le noyau même d'aller travailler? Comment puis-je obtenir mon jupyter noyau de savoir dans quel environnement il est censé être en cours d'exécution en vertu de l'?

merci!

186voto

tschundler Points 63

C'est une partie délicate de ipython / Jupyter. L'ensemble des noyaux sont indépendants de ce que votre virtualenv est quand vous commencez à jupyter ordinateur Portable. Le truc, c'est la configuration de la ipykernel paquet dans l'environnement que vous souhaitez identifier de manière unique à jupyter. De docs sur les multiplier ipykernels,

source activate ENVNAME
pip install ipykernel
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)"

Si vous souhaitez seulement avoir une seule Python 3 du noyau, de la conda de l'environnement, il suffit d'utiliser python -m ipykernel install --user et il sera réinitialisé à la valeur par défaut de python à la une dans le virtualenv.

Et oui, vous aurez besoin de redémarrer le noyau et ré-exécutez les étapes préalables.

Voir Aussi l'Aide de Python 2.x et Python 3.x dans IPython Notebook

13voto

Antoine Dusséaux Points 1480

La solution de @ tschundler fonctionne parfaitement si votre environnement a déjà été créé.

Si vous souhaitez modifier le noyau par défaut lors de la création de votre environnement virtuel et éviter toute configuration manuelle, il vous suffit d'ajouter jupyter à la fin de la commande conda:

conda create --name ENVNAME python=PYTHONVERSION jupyter

Le noyau correct sera alors utilisé lorsque vous utiliserez le bloc-notes ipython ou jupyter.

10voto

markroxor Points 1025

Dans mon cas, jupyter n'a pas pu «choisir» le python de l'environnement virtuel. J'ai donc dû éditer ~/.local/share/jupyter/kernels/{my_env_name}/kernel.json et ajouter un chemin vers l'interpréteur

dans la touche argv .

4voto

Rakend Dubba Points 11

Il y a aussi un moyen simple ici

 workon my-virtualenv-name  # activate your virtualenv, if you haven't already
pip install tornado==4.5.3
pip install ipykernel==4.8.2
 

Vous devriez maintenant pouvoir voir votre noyau dans le menu du bloc-notes IPython: Kernel -> Changer le noyau et pouvoir y basculer (vous devrez peut-être actualiser la page avant qu'elle n'apparaisse dans la liste). IPython se souviendra dès lors du noyau à utiliser pour ce bloc-notes.

Cela a fonctionné pour moi. la source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X