Instala pypy 5.0 y numpypy en un virtualenv y juega con Jupyter

Hoy voy a mostrar como usar la última versión de pypy y numpypy en vuestro linux. Para instalar pypy usaremos la versión portable creada por squeaky-pl. Numpypy lo instalaremos en un entorno virtual juntamente con Jupyter para poder hacer las pruebas en un entorno más amigable que la consola de pypy.

Requerimientos

Necesitaremos tener instalada una versión reciente de virtualenv y git.

Al lío

¡Si queréis la versión TL;DR pinchad aquí! Si sois un poco más pacientes y queréis entender un poco lo que vamos a hacer seguid leyento.

Todos los comandos que vienen a continuación los tenéis que meter en un terminal. Primero creamos un directorio que se llamará pypy50 en vuestro $HOME

mkdir $HOME/pypy50

Ahora nos vamos al directorio recién creado y nos descargamos el fichero comprimido que contiene el pypy portable de 64 bits

cd $HOME/pypy50
wget https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.0-linux_x86_64-portable.tar.bz2

Lo desempaquetamos:

tar xvfj pypy-5.0-linux_x86_64-portable.tar.bz2

Ahora creamos un directorio bin en nuestro $HOME. Si ya existe te puedes saltar este paso:

mkdir $HOME/bin

Creamos un enlace simbólico al ejecutable del pypy portable que hemos descargado que se encontrará en la carpeta bin del directorio $HOME:

ln -s $HOME/pypy50/pypy-5.0-linux_x86_64-portable/bin/pypy $HOME/bin

Cambiamos los permisos al ejecutable para darle permisos de ejecución:

chmod +x $HOME/pypy50/pypy-5.0-linux_x86_64-portable/bin/pypy

Al final de nuestro .bashrc vamos a añadir unas pocas líneas para que se añada el directorio bin de nuestro $HOME al $PATH:

echo "" >> $HOME/.bashrc
echo "# Added path to include pypy by $USER" >> $HOME/.bashrc
echo "export PATH=$PATH:$HOME/bin" >> $HOME/.bashrc
source $HOME/.bashrc

Creamos el virtualenv con pypy (en este paso necesitaréis tener virtualenv instalado). El virtualenv se creará en la carpeta bin de nuestro $HOME y se llamará pypyvenv:

virtualenv -p pypy $HOME/bin/pypyvenv

Instalamos numpypy (numpy para pypy) en el nuevo virtualenv creado (aquí necesitarás tener git instalado). Para ello usamos el pip del entorno virtual.

$HOME/bin/pypyvenv/bin/pip install git+https://bitbucket.org/pypy/numpy.git

Instalamos Jupyter haciendo algo parecido a lo anterior (aunque esta vez lo instalamos desde pypi, no confundir con pypy):

$HOME/bin/pypyvenv/bin/pip install jupyter

Y, por último, hacemos un poco de limpieza eliminando el fichero comprimido del pypy portable que hemos descargado anteriormente:

rm $HOME/pypy50/pypy*.tar.bz2

¡¡¡Listo!!!

Usando pypy

Para usar pypy (sin numpy) puedes lanzar una consola con pypy 5.0 (compatible con CPython 2.7) escribiendo en el terminal:

pypy

Usando pypy con numpy en un notebook de jupyter

Activamos el entorno virtual recien creado. Desde el terminal escribimos:

. ~/bin/pypyvenv/bin/activate

Y arrancamos jupyter:

jupyter notebook

Y después venís aquí y me contáis vuestras experiencias con pypy y numpypy o, si habéis encontrado fallos o queréis añadir mejoras, os vais a github y abrís un issue o mandáis un Pull Request y salimos ganando todos.

Ideas para mejorar el script (con vuestros pull requests)

  • Que pregunte donde instalar el pypy portable.
  • Que pregunte si queremos una carpeta bin o no.
  • Que pregunte cómo queremos llamar al entorno virtual y dónde lo queremos instalar.
  • Que pregunte si queremos instalar Jupyter y/u otras librerías.
  • ...

Saludos.

 

tutormagic: Jupyter + pythontutor

Esta será una microentrada para presentar una extensión para el notebook que estoy usando en un curso interno que estoy dando en mi empresa.
Si a alguno más os puede valer para mostrar cosas básicas de Python (2 y 3, además de Java y Javascript) para muy principiantes me alegro.

Nombre en clave: tutormagic

Esta extensión lo único que hace es embeber dentro de un IFrame la página de pythontutor usando el código que hayamos definido en una celda de código precedida de la cell magic %%tutor.
Como he comentado anteriormente, se puede escribir código Python2, Python3, Java y Javascript, que son los lenguajes soportados por pythontutor.

Ejemplo

Primero deberemos instalar la extensión. Está disponible en pypi por lo que la podéis instalar usando pip install tutormagic. Una vez instalada, dentro de un notebook de IPython la deberías cargar usando:

%load_ext tutormagic
Una vez hecho esto ya deberiamos tener disponible la cell magic para ser usada. Podéis ver un ejemplo en este notebook.

Y eso es todo

Lo dicho, espero que sea útil para alguien.

Saludos.

Anunciado coLaboratory: IPython/Jupyter + Google

Google anunció ayer oficialmente el proyecto coLaboratory, una nueva herramienta para «hacer análisis de datos» que no es ni más ni menos que la integración del notebook de IPython/Jupyter y los productos de Google, especialmente Google Drive.

El ecosistema Python científico sigue avanzando a un ritmo frenético y el proyecto IPython (que ahora se llama Jupyter) va a la cabeza. Después de que Fernando Pérez anunciase en la última y épica SciPy celebrada en Austin, TX que iban a separar la parte del notebook que no depende del lenguaje para crear el proyecto Jupyter, ahora se ven los frutos de las nuevas alianzas que ha creado el equipo de desarrollo y que seguramente supondrán una revolución en el corto plazo.

Como explican desde Google, coLaboratory corre en Google Chrome gracias a su tecnología PNaCl y la aplicación para el navegador lleva incorporadas todas las bibliotecas de Python necesarias, de tal forma que es extremadamente fácil de instalar. Será posible editar notebooks como si fuesen documentos de Google Drive y colaborar entre varias personas.

Nuevo notebook
Nuevo notebook

Aunque sin duda lo más impactante es la posibilidad de crear componentes gráficos interactivos a partir de código. Como se ve en la imagen, en el código de una celda podemos añadir unos comentarios especiales que generan elementos como deslizadores, menús desplegables... y que el programador puede ocultar el código y mostrar solo esa parte gráfica, mejorando enormemente la experiencia del usuario no programador.

Las posibilidades de coLaboratory parecen infinitas. Yo al menos no lo probaré hasta después del verano, pero si alguien se atreve a instalar Chrome beta y a hacer sus primeros experimentos que no dude en contarnos sus experiencias e incluso mandarnos un artículo al blog 😉