Comenzando con Python: Preparación entorno de desarrollo

Preparación del entorno de trabajo

Para poder comenzar a desarrollar código deberemos tener instalado Jupyter y virtualenv.

¿Qué es Jupyter? Jupyter es un block de notas web de código abierto que te permitirá crear y compartir documentos con bloques de código los cuales podrán ser ejecutados sobre el propio block de notas.

¿Y virtualenv? Virtualenv es una herramienta que permite la creación de entornos de trabajo aislados dedicados a Python.
Un problema bastante grande que se presenta cuando se inicia en el mundo de la programación en Python, es que los programas que utilizamos requieren de una serie de librerías o utilidades que son instaladas por defecto en una carpeta global (a modo de “gran saco”). Esto en si mismo no es un problema si se sabe lo que se instala y las librerías que tienes instaladas. Pero no siempre una es conocedora de lo que tiene instalado y muchas veces dos programas Python distintos requieren de librerías que entre ellas son incompatibles, lo que acaba generando inconsistencias entre las aplicaciones. Virtualenv previene esos problemas.
Con virtualenv podrás realizar la instalación de todas las librerías de un proyecto Python en un directorio especificado por ti, lo que previene que aparezcan incompatibilidades entre las librerías de los distintos proyectos.

Instalando Jupyter y virtualenv

Ambos programas pueden ser instalados haciendo uso de una pequeña herramienta escrita en python que viene por defecto en nuestros equipos GNU/Linux, la herramienta en cuestión se llama pip y puede ser utilizada directamente desde nuestro terminal.
Sabiendo esto, comencemos con la ejecución de comandos.

pip3 install --upgrade \
 jupyter \
 virtualenv

Al ejecutar estos comandos lo que hemos hecho es instalar los programas jupyter y virtualenv a la vez que los actualizamos a la última versión existente.

¿Fácil, no? :)

Ahora aprenderemos a como iniciar Jupyter

Como hemos dicho, virtualenv permite definir un directorio donde se realizará la instalación de todas las dependencias. Para ello es necesario lanzar una serie de comandos para la creación y la activación del directorio.

Como lo que deseamos es que Jupyter haga uso de dicho directorio, el orden de ejecución será:

  1. Preparar con virtualenv el directorio para las librerías
  2. Ejecutar jupyter “enlazado” a dicho directorio

Bien pues, comencemos.
Lo primero será navegar con el terminal al directorio en el cual queremos crear nuestro nuevo block de notas:

mkdir -p ~/jupyter.d/example.d
cd ~/ jupyter.d/example.d

Este comando habrá creado la carpeta jupyter.d en nuestra carpeta personal y example.d como subcarpeta de jupyter.d

He creado las carpetas con la extensión .d para que se vea claramente que se trata de un “directorio”, pero debéis saber que no es algo obligatorio

Ahora, estando dentro de example.d vamos a crear el directorio para instalar todas las librerías que irá necesitando jupyter.

virtualenv .ENV
source .ENV/bin/activate

Una vez ejecutado el comando source, observarás que la línea de comando ha obtenido el prefijo (.ENV), esto quiere decir que ahora se cogerá por defecto como “librería común” la carpeta .ENV en vez de la carpeta global del sistema operativo. Ea, conseguido, ahora a ejecutar el block de notas.

jupyter notebook

Tras ejecutar esta acción, observaremos que se nos abre nuestro navegador web con la dirección http://localhost:8888. ¡Listo, ya tenemos nuestro block de notas web en marcha! Ahora conforme vayamos creando cosas (amo la palabra “cosa” xD) se irán almacenando en ~/jupyter.d/example.d.

Tips básicos

Debido a que la interfaz que presenta Jupyter es batante intuitiva, intentaré ser breve.

Crearemos un nuevo fichero python a modo de prueba, para ver dos cosas básicas. Para ello nos dirigiremos al botón New y seleccionamos la opción Python3, el botón lo tendrás situado en la esquina superior derecha de la tabla que presenta nuestros blocks de notas (la cual, estará vacía y mostrará un mensaje parecido a: The booknote list is empty.)

Esta acción habrá abierto una nueva pestaña en tu navegador con la dirección http://localhost:8888/notebooks/Untitled.ipynb a la vez que habrá creado el archivo Untitled.ipynb en la carpeta ~/jupyter.d/example.d.
No te preocupes por el nombre, lo puedes cambiar, para ello solo debes pinchar en el nombre del block Untitled situado en la vista (justo al lado del logo de Jupyter) y editarlo. Esta acción cambiará también el nombre del block de tu carpeta ~/jupyter.d/example.d.

Podrás observar una caja de texto con el prefijo In [ ]:. Dicho prefijo indica que se trata de un bloque destinado a código Python, vamos a insertar algo de código, prueba a escribir y a continuación, para ejecutar el bloque, presiona shift + enter.

print('Hola mundo!')

Podrás observar dos cosas, por un lado la salida que produce este código y por otro lado que se ha generado un nuevo bloque vacío.

Ahora vamos a cambiar el lenguaje del bloque nuevo generado de Python a lenguaje de marcado, para ello deberás buscar por las opciones de la barra de herramientas un desplegable que muestra el teto Code y cambiarlo por Markdown. Observarás que ha desaparecido el prefijo In [ ]: del bloque (Luego explicaré que es dicho prefijo).

Prueba a escribir en el bloque de markdown y presiona shift + enter para finalizar y ejecutar el bloque:

# Pasos básicos en el inicio a la programación

* Aprender a amar “Hola mundo” por encima de todas las cosas.
* Escribir alguna operación matemática

¿Mola eh? Markdown es un lenguaje que permite generar documentos con títulos, listas, comentarios, tablas y unas cuantas opciones más con una sintaxis muy sencilla que para documentar nuestro código nos va a venir de lujo. Puedes aprender algo de sintaxis de markdown a través de una búsqueda en duckduckgo.com.

Ahora es el momento de explicar In [ ]:. Este prefijo es exclusivo de los bloques de tipo Code y representan el número de ejecuciones que se han realizado del propio bloque. Si seleccionamos nuestro bloque python (El que contenía el “Hola mundo!”) y presionamos ctrl + enter observaremos que dicho contador va incrementando por cada pulsación.

La combinación de teclas ctrl + enter ejecuta el bloque de código actual, mientra que la combinación shift` + enter ejecuta el bloque actual y pasa al siguiente bloque (en caso de no existir un bloque a continuación, crea uno nuevo).

Y para acabar…

Cuando nos cansemos de trabajar en jupyter y deseemos cerrarlo, deberemos ir al terminal donde lo ejecutamos y presionar ctrl + C para matar el servidor que habíamos levantado y cerrar correctamente virtualenv con el comando deactivate (Dicho comando eliminará el prefijo (.ENV)).