Uso de Python 2.xy Python 3.x en IPython Notebook

255

Utilizo portátiles IPython y me gustaría poder seleccionar para crear un portátil python 2.xo 3.x en IPython.

Inicialmente tuve Anaconda. Con Anaconda, se tuvo que cambiar una variable de entorno global para seleccionar qué versión de Python desea y luego se pudo iniciar IPython. Esto no es lo que estaba buscando, así que desinstalé Anaconda y ahora he configurado mi propia instalación usando MacPorts y PiP. Parece que todavía tengo que usar

port select --set python <python version> 

para alternar entre python 2.xy 3.x. que no es mejor que la solución anaconda.

¿Hay alguna manera de seleccionar qué versión de python desea usar después de iniciar un cuaderno de IPython, preferiblemente con mi compilación actual de MacPorts?

deltap
fuente

Respuestas:

337

La idea aquí es instalar múltiples ipython núcleos. Aquí hay instrucciones para la anaconda. Si no está usando anaconda, recientemente agregué instrucciones usando virtualenvs puros.

Anaconda> = 4.1.0

Desde la versión 4.1.0, anaconda incluye un paquete especial nb_conda_kernelsque detecta entornos conda con núcleos de notebook y los registra automáticamente. Esto hace que usar una nueva versión de Python sea tan fácil como crear nuevos entornos de conda:

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

Después de reiniciar el jupyter notebook, los nuevos núcleos están disponibles en la interfaz gráfica. Tenga en cuenta que los nuevos paquetes deben instalarse explícitamente en los nuevos entornos. Los entornos de gestión sección en los documentos de conda proporciona más información.

Registro manual de núcleos

Los usuarios que no desean usar nb_conda_kernelso aún usan versiones anteriores de anaconda pueden seguir los siguientes pasos para registrar manualmente los núcleos de ipython.

configurar el python2.7entorno:

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

configurar el python3.6entorno:

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

Después de eso deberías poder elegir entre python2
y python3al crear un nuevo bloc de notas en la interfaz.

Además, puede pasar las opciones --namey --display-namea ipython kernel installsi desea cambiar los nombres de sus núcleos. Ver ipython kernel install --helppara más información.

cel
fuente
Su solución se parece mucho a la solución que terminé usando y, en principio, esperaría que funcione. Como ya desinstalé anaconda y conseguí que funcionara, no podré verificarlo.
deltap
99
Si desea configurar las especificaciones del kernel sin requerir root, puede ipython kernelspec install-self --userinstalarlas para el usuario actual.
Thomas K
1
¡Lo he descubierto! Su respuesta ayudó! dropbox.com/s/6ayqf55ctkv2xgk/…
Programador inteligente
77
¡El elemento clave es que debe INSTALAR nb_conda_kernels, no vino con mi Anaconda inicial! ¡Gracias!
dartdog
1
@cel, de hecho, el entorno desde el que inicio jupyter no tiene el paquete nb_conda_kernels instalado de forma predeterminada. No me tomé el tiempo de leer todos los comentarios: tal vez podrías editar tu respuesta e incluir el remak de dartdog.
Antoine Gautier
276

Si está ejecutando Jupyter en Python 3, puede configurar un núcleo de Python 2 como este:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

http://ipython.readthedocs.io/en/stable/install/kernel_install.html

Ish
fuente
52
Cambie el '2' por '3' si ya tiene python2 configurado y necesita python3. No entiendo por qué esta no es la respuesta principal, definitivamente gana con la navaja de Occam y funcionó para mí.
wordsforthewise
66
Funciona perfectamente. Debería ser la primera respuesta de hecho.
JSmyth
2
¿Se incluye el comando python2 en el propio python? Dé una explicación detallada de esta respuesta. :)
verystrongjoe
3
esto funciona, pero no está vinculado a mi sistema python 2 con paquetes adicionales. ¿Hay alguna manera de vincular a un binario / ejecutable de Python existente?
Rutger Hofste
1
Funciona perfectamente en win10, solo reemplace python2con your\path\to\python(2).exe.
Lucien
42

Estas instrucciones explican cómo instalar un núcleo python2 y python3 en entornos virtuales separados para usuarios que no son anaconda. Si está usando anaconda, encuentre mi otra respuesta para una solución directamente adaptada a anaconda.

Supongo que ya lo has jupyter notebookinstalado.


Primero asegúrese de tener python2un python3intérprete conpip disponible.

En ubuntu los instalaría de la siguiente manera:

sudo apt-get install python-dev python3-dev python-pip python3-pip

Luego prepare y registre los entornos del núcleo

python -m pip install virtualenv --user

# configure python2 kernel
python -m virtualenv -p python2 ~/py2_kernel
source ~/py2_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py2 --user
deactivate

# configure python3 kernel
python -m virtualenv -p python3 ~/py3_kernel
source ~/py3_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py3 --user
deactivate

Para facilitar las cosas, es posible que desee agregar alias de shell para el comando de activación a su archivo de configuración de shell. Dependiendo del sistema y el shell que use, esto puede ser ~/.bashrc, por ejemplo , ~/.bash_profileo~/.zshrc

alias kernel2='source ~/py2_kernel/bin/activate'
alias kernel3='source ~/py3_kernel/bin/activate'

Después de reiniciar su shell, ahora puede instalar nuevos paquetes después de activar el entorno que desea usar.

kernel2
python -m pip install <pkg-name>
deactivate

o

kernel3
python -m pip install <pkg-name>
deactivate
cel
fuente
Seguí esto hasta el punto, instalé pandas, comencé jupyter, cambié al núcleo py3: la importación de pandas falló con el error 'no encontrado'. Me está volviendo loco
usuario1255933
1
@ user1255933, esto probablemente se deba a una instalación con la versión incorrecta de pip. Esto puede suceder si la activación del entorno de destino falló o no contiene una versión pip. Puede encontrar mi respuesta aquí interesante: stackoverflow.com/questions/32680081/… .
cel
Gracias por la instrucción que en el uso de manera no anaconda a instalar el kernel
mdivk
37

Con una versión actual de Notebook / Jupyter, puede crear un núcleo Python3 . Después de iniciar una nueva aplicación portátil desde la línea de comandos con Python 2, debería ver una entrada "Python 3" en el menú desplegable "Nuevo". Esto le proporciona una computadora portátil que usa Python 3. Por lo tanto, puede tener dos computadoras portátiles en paralelo con diferentes versiones de Python.

Los detalles

  1. Crea este directorio: mkdir -p ~/.ipython/kernels/python3
  2. Crea este archivo ~/.ipython/kernels/python3/kernel.jsoncon este contenido:

    {
        "display_name": "IPython (Python 3)", 
        "language": "python", 
        "argv": [
            "python3", 
            "-c", "from IPython.kernel.zmq.kernelapp import main; main()", 
            "-f", "{connection_file}"
        ], 
        "codemirror_mode": {
            "version": 2, 
            "name": "ipython"
        }
    }
  3. Reinicie el servidor de la notebook.

  4. Seleccione "Python 3" del menú desplegable "Nuevo"
  5. Trabajar con una computadora portátil Python 3
  6. Seleccione "Python 2" del menú desplegable "Nuevo"
  7. Trabajar con una computadora portátil Python 2
Mike Müller
fuente
Esto es genial y estoy tratando de que funcione, pero ¿podría especificar cómo comenzar jupyteren este escenario (tengo que ejecutar ipython notebooko ipython3 notebook). En este momento solo puedo ejecutar uno u otro (con sus respectivos entornos, pero veo los dos núcleos enumerados en el interior jupyter. ¿Podrías expandir tu respuesta para incluir cómo comenzar jupyterpara que pueda correr python2y python3lado a lado? ¡Gracias!
Chris
1
Ok, creo que lo descubrí: tuve que ajustar el kernel.jsonarchivo dentro ~/Library/Jupyter/kernels/python3/(en OS X) y agregar los argumentos mencionados en el archivo vinculado.
Chris
@Chris Sí, aunque la descripción detrás del enlace se da en un cuaderno de IPython, se podría hacer en un editor. Simplemente cree o modifique un archivo con un nombre determinado en una ruta determinada y con el contenido que se muestra. Me alegra que hayas resuelto tu problema.
Mike Müller
Recomendaría editar su respuesta para incluir los detalles de ese enlace. Las respuestas no deberían mantener oculta la parte más importante "detrás" de un enlace.
Chris
1
@Chris Agregó los detalles del enlace.
Mike Müller
22

Hay una solución disponible que me permite mantener mi instalación de MacPorts configurando Ipython kernelspec.

Requisitos:

  • MacPorts está instalado en el directorio habitual / opt
  • Python 2.7 se instala a través de macports
  • Python 3.4 se instala a través de macports
  • Ipython está instalado para python 2.7
  • Ipython está instalado para python 3.4

Para python 2.x:

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

Para python 3.x:

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

Ahora puede abrir una computadora portátil Ipython y luego elegir una computadora portátil python 2.xo una computadora portátil python 3.x.

¡Elige tu pitón!

deltap
fuente
¿Puede confirmar que puede ejecutar python2ypython3 kernel notebooks lado a lado en la misma jupyterinstancia? En este caso, ¿cómo exactamente comienza jupytera no tener caminos en conflicto? Actualmente solo puedo ejecutar python2o python3codificar configurando el $PATH $PYTHONPATHentorno apropiado de antemano. ¿Puedo evitar esto de alguna manera?
Chris
Puedo ejecutar cuadernos de kernel python2 o python3.
deltap
¿Cómo se inicia jupyter(dado que está instalado por python 2.7y para python 3.4) ¿Ha definido $ PYTHONPATH o ha obtenido algún entorno virtual? Solo estas llamandoipython notebook ? Si es así, ¿a qué ipythonse refiere eso: el que está instalado para 2.7 o 3.4?
Chris
Solo estoy llamando python notebook. which ipythonmuestra que está apuntando a/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap
Muy bien, descubrí mi problema y tenía que ver con un predefinido $PYTHONPATH, lo que dificulta el cambio de núcleos. Tenía que hacerlo unset PYTHONPATHantes de comenzar ipythony ahora funciona.
Chris
18

Desde mi instalación de Linux hice:

sudo ipython2 kernelspec install-self

Y ahora mi python 2 está de vuelta en la lista.

Referencia:

http://ipython.readthedocs.org/en/latest/install/kernel_install.html


ACTUALIZAR:

El método anterior ahora está en desuso y se eliminará en el futuro. El nuevo método debería ser:

sudo ipython2 kernel install

mimoralea
fuente
2
Odio pegar comandos al azar en mi instalación de Ubuntu, pero esto funcionó para mí.
Joseph
1
Debería ser la respuesta elegida.
e9t
1
Breve y hasta el punto, he aplicado esta solución en Mac OS X, funciona sin problemas.
Konrad
1
Intenté todas las respuestas. Pero esto funcionó para mí. Pruébalo si estás en ubuntu.
sinsuren
1
Y donde puedo obtener ipython2?
sudo
5

Los siguientes son los pasos para agregar el núcleo python2 al cuaderno jupyter ::

abra una terminal y cree un nuevo entorno de python 2: conda create -n py27 python=2.7

activar el entorno: Linux source activate py27o Windowsactivate py27

instale el kernel en el entorno: conda install notebook ipykernel

instale el kernel por fuera del env: ipython kernel install --user

cierra el env: source deactivate

Aunque una respuesta tardía espero que alguien lo encuentre útil: p

Akash Chandra
fuente
Esto no agrega nada más allá de lo que ya se indicó claramente en la respuesta de @ cel .
merv
3

Úselo sudo pip3 install jupyterpara instalar jupyter para python3 y sudo pip install jupyterpara instalar jupyter notebook para python2. Luego, puede llamar al ipython kernel installcomando para habilitar ambos tipos de notebook para elegir en jupyter notebook.

sv_jan5
fuente
1

Miré esta excelente información y luego me pregunté , ya que

  1. Tengo python2, python3 e IPython todos instalados,
  2. tengo instalado PyCharm,
  3. PyCharm usa IPython para su consola Python,

si PyCharm usaría

  1. IPython-py2 cuando Menú> Archivo> Configuración> Proyecto> Intérprete de proyecto == py2 Y
  2. IPython-py3 cuando Menú> Archivo> Configuración> Proyecto> Intérprete de proyecto == py3

RESPUESTA: Si!

PD: también tengo instalado Python Launcher para Windows.

Amor y paz - Joe Codeswell
fuente
0

En Windows 7 tenía anaconda y anaconda3 instaladas. Entré \Users\me\anaconda\Scriptsy ejecuté

sudo .\ipython kernelspec install-self

luego entré \Users\me\anaconda3\Scriptsy ejecuté

sudo .\ipython kernel install

(Tengo jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec. )

Después de comenzar jupyter notebook(en anaconda3) obtuve un menú desplegable ordenado en la esquina superior derecha debajo de "Nuevo" que me permite elegir entre los núcleos Python 2 o Python 3.

Krischu
fuente
0
  • Si está ejecutando anaconda en un entorno virtual.
  • Y cuando crea un nuevo cuaderno pero no estoy mostrando que seleccione el kernel del entorno virtual.
  • Luego debes configurarlo en el ipykernel usando el siguiente comando
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Rahul Verma
fuente