python - change kernel jupyter
Libreta jupyter ejecutando kernel en diferentes env. (4)
Me he metido en una especie de horrible lío virtualenv. ¡¿Ayuda?!
conda
ambientes con conda
. Hasta hace poco, solo tenía un kernel de jupyter python2, pero decidí arrastrarme pateando y gritando al siglo XXI e instalé un kernel de python3; Olvidé cómo lo hice.
Mi principal (anaconda) python por defecto es 2.7.
Así que aquí estoy, tratando alegremente de usar una sopa hermosa de mi nuevo y brillante kyel python3, y parece que no puedo hacer nada para llegar al entorno en el que esté encontrando paquetes. Viz (todo desde un cuaderno):
from bs4 import BeautifulSoup
-> ImportError: No module named ''bs4''
Ok, bien, lo instalaré usando shell magic. ¿Derecha? ¿Derecha?
! 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 no. ¿Piensa que estoy en una versión 2.7 env aunque estoy ejecutando un kernel python3? Eso no servirá.
! 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, puedo arreglar eso. Uno de ellos es un 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
sobre...
! pip install bs4
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages
más preocupante ...
from bs4 import BeautifulSoup
-> ImportError: No module named ''bs4''
ARRGH !!! headdesk ¿Voy a tener que matar el kernel para arreglar esto (y volver a ejecutar un poco de trabajo)? ¿Matar el kernel incluso va a funcionar? ¿Cómo puedo hacer que mi kernel jupyter sepa en qué entorno se está ejecutando?
¡Gracias!
En mi caso, de alguna manera, el jupyter no pudo "escoger" la pitón del entorno virtual. Así que tuve que editar ~/.local/share/jupyter/kernels/{my_env_name}/kernel.json
y agregar una ruta al intérprete
en la tecla argv
.
Esta es una parte difícil de ipython / Jupyter. El conjunto de núcleos disponibles es independiente de lo que es su virtualenv cuando inicia el jupyter Notebook. El truco es configurar el paquete ipykernel en el entorno en el que desea identificarse de forma exclusiva a jupyter. De documentos en multiplicar ipykernels ,
source activate ENVNAME
pip install ipykernel
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)"
Si solo desea tener un solo kernel de Python 3, desde el entorno conda, simplemente use python -m ipykernel install --user
y se restablecerá el python predeterminado al de virtualenv.
Y sí, deberá reiniciar el kernel y volver a ejecutar los pasos anteriores.
Consulte también Uso de Python 2.xy Python 3.x en IPython Notebook
La solución de @ tschundler funciona perfectamente si su entorno ya ha sido creado.
Si desea cambiar el kernel predeterminado en la creación de su entorno virtual y evitar cualquier configuración manual, solo necesita agregar jupyter
al final del comando conda:
conda create --name ENVNAME python=PYTHONVERSION jupyter
El kernel correcto se usará cuando uses ipython o jupyter notebook.
También hay una manera fácil aquí
workon my-virtualenv-name # activate your virtualenv, if you haven''t already
pip install tornado==4.5.3
pip install ipykernel==4.8.2
Ahora debería poder ver su kernel en el menú del cuaderno de IPython: Kernel -> Cambiar kernel y poder cambiarlo (es posible que deba actualizar la página antes de que aparezca en la lista). IPython recordará qué kernel usar para ese portátil a partir de ese momento.
Esto funcionó para mí. source