Torre de Babel

Cómo instalar Python en Windows

by Francisco Charte.

Características de Python como lenguaje de programación

Con la excepción de aquellos que tuvieron la oportunidad de cursar estudios de informática o ciencias de la computación, la mayoría de los jóvenes que apredieron a programar en la década que va de 1975 a 1985 (entre los que me cuento) lo hicieron de mano de un microordenador y, en consecuencia, del archiconocido y denostado lenguaje BASIC (Beginner's All-purpose Symbolic Instruction Code). A pesar de sus carencias, los intérpretes que se usaban por entonces ni siquiera contemplaban el paradigma de programación estructurada, BASIC fue durante esos años, y algunos más, el lenguaje de programación más popular entre los que se iniciaban en el uso de un ordenador.

Cabría preguntarse qué provocó que BASIC adquiriese aquella difusión y se convirtiese en el primer contacto de millones de programadores con el campo de la programación, a pesar de que muchos de ellos, con el tiempo, hayan preferido olvidarlo e, incluso, negar aquella experiencia. En mi opinión hay una respuesta clara: BASIC era el lenguaje más accesible a todos, ya que estaba incluido en la ROM de gran parte de los microordenadores (incluso el IBM PC incluía inicialmente en ROM dicho intérprete conjuntamente con una versión más avanzada en disco) o bien se incluía como parte del sistema operativo que facilitaba el fabricante, como el MBASIC de CP/M o el GW-BASIC de MS-DOS.

Otra virtud del BASIC de entonces era que no requería, por parte de los usuarios, ningún conocimiento previo sobre programación, algo prácticamente imprescindible para poder usar otros lenguajes. Sin saber nada, con un pequeño manual y algunos ejemplos se comenzaba a escribir y ejecutar programas en pocos minutos. El hecho de que BASIC fuese un intérprete (también existieron compiladores) era un factor determinante: no había que crear un archivo de código fuente, abrirlo con un editor, introducir el código, compilar y ejecutar, sino que bastaba con escribir las sentencias e interactivamente se obtenían las respuestas. Esa interactividad enganchaba al usuario que, tras algunas sesiones, aprendía a combinar múltiples sentencias (precediéndolas de un número de líneas) para crear su primer programa.

Transcurridas varias décadas de aquel contexto, ¿qué lenguaje podríamos elegir como el BASIC de la actualidad? ¿Qué lenguaje podría usar alguien que, sin conocimientos previos más allá de los de cualquier usuario de ordenador, quisiese iniciarse en el mundo de la programación? Pienso que tendría que ser un lenguaje multiplataforma, de manera que el sistema operativo (e incluso el dispositivo empleado) no fuese un obstáculo; que debería ser un intérprete o al menos tener la posibilidad de usarlo como tal, que debería otorgar libertad al usuario a la hora de usar el paradigma de programación que prefiera y, sobre todo, que fuese open source para evitar atarse a una empresa determinada.

Lenguajes de programación abiertos e interpretados hay multitud. Algunos de ellos, como es el caso de JavaScript o PHP, tienen asociadas funciones bastante específicas relacionadas con la Web (si bien pueden utilizarse fuera de esos campos). Otros, como es el caso de Ruby, en la práctica fuerzan al usuario a utilizar un paradigma concreto como el de orientación a objetos. De otras opciones, como Perl, Lisp o Tcl (y muchos otros que desconozco), hay aspectos como su sintaxis o la poca adecuación a problemas de propósito general que le hacen poco deseables.

Éste es un tema en el que llevo pensando algún tiempo, desde hace unos meses (escrito en septiembre de 2010), y en mi opinión uno de los lenguajes mejor posicionados para ocupar la posición de aquel BASIC, sino el mejor, es Python. Algunas de las razones para ello:

  • Se trata de un lenguaje que está disponible para multitud de sistemas operativos, entre ellos Linux, MacOS X, Windows o Android, de hecho forma parte de muchas distribuciones de Linux actuales lo que equivale, salvando las distancias, a tenerlo disponible de inmediato como el BASIC en ROM de antaño.
  • Aparte de ser interpretado, como muchas otras de las opciones antes citadas, Python puede ser utilizado de forma interactiva gracias a una consola sencilla.
  • Python permite emplear distintos paradigmas de programación, incluyendo la programación estructurada y la orientación a objetos, lo cual permite cambiar a medida que se va aprendiendo.
  • La sintaxis del lenguaje es suficientemente sencilla y clara, ofrece un sistema de tipos dinámico y gestión automática de asignación/liberación memoria.
  • A diferencia de otros lenguajes, Python cuenta con una extensa biblioteca estándar que facilita su aplicación para distintos propósitos: tratamiento científico de datos, diseño de interfaces de usuario, manipulación del sistema de archivos, comunicación por red, etc. Esto abre las puertas a su utilización en todo tipo de proyectos, no siendo únicamente un lenguaje ideal para el aprendizaje.

El sitio oficial de Python es mantenido por la PSF Python Software Foundation, una fundación encargada de mantener el núcleo del lenguaje y hacerlo evolucionar. Desde él pueden obtenerse versiones compiladas de Python para distintos sistemas operativos, así como el código fuente. En los teléfonos con Android puede utilizarse Python gracias al proyecto android-scripting, un software que ofrece un editor integrado y el intérprete de Python.

Instalación de Python en Windows

El lenguaje Python está disponible para múltiples sistemas operativos, entre ellos Linux y Windows. En las últimas distribuciones de Linux y versiones de MacOS X Python ya está ahí, por lo que no es necesario instalar nada. En caso de que no sea así, basta con abrir el gestor de paquetes que corresponda y buscar python para encontrar rápidamente los paquetes a instalar. En el caso de Ubuntu, que es la distribución de Linux más conocida, Python está instalado por defecto y puede ser localizado en el Centro de software Ubuntu al que corresponde la imagen inferior.

La instalación de módulos/extensiones de Python resulta, en Linux o MacOS X, igualmente fácil, ya que el gestor de paquetes normalmente ofrece la versión adecuada y se encarga de resolver las dependencias que pudieran existir, siendo posible siempre descargar el código fuente y compilar. Anecdóticamente la mayoría de tutoriales que se encuentran por la Web explican cómo instalar Python y sus extensiones en Linux, pero muy pocos detallan el proceso a seguir en Windows. Lógicamente se asume que un programador (puesto que va a usar Python) tendrá recursos suficientes como para arreglárselas por sí solito, pero por si acaso he decidido escribir esta breve entrada.

Lo primero que hemos de tener en cuenta es qué módulos de Python pretendemos usar, ya que de esto dependerá en parte la versión de lenguaje que tengamos que instalar. Actualmente hay dos ramas en desarrollo del núcleo de Python: la 3.x y 2.x, cuyas últimas versiones son la 3.1 y 2.7. La rama 3.x es, lógicamente, el futuro de Python, pero cuenta con algunos cambios que hacen necesario adecuar el código pensado para versiones previos. Ésta es la razón de muchos módulos aún no estén disponibles para usar con Python 3.x. En la rama 2.x la versión más alta es la 2.7, pero también hay una rama 2.6.x que sigue manteniéndose resolviendo los fallos que se detectan. La última versión de dicha rama, la 2.6.6, se lanzó hace ahora un mes y es importante, ya que muchos módulos populares funcionan sobre Python 2.6.x, pero no con Python 2.7.x ni Python 3.x.

Es importante, en consecuencia, hacer una revisión de los módulos que vamos a necesitar y la dependencia que tienen respecto a la versión de Python que debe tenerse instalada. Asumiendo que vayamos a usar Python para realizar tareas de análisis de datos, como es mi caso, nos resultarán imprescindibles al menos los tres siguientes módulos:

  • NumPy: Facilita el trabajo con matrices de cualquier dimensión y ofrece funciones de álgebra lineal y generación de números aleatorios. La última versión disponible es la 1.5.0 liberada el pasado 31 de agosto.
  • SciPy: Este módulo permite a Python acercarse a las capacidades de MatLab, al ofrecer funciones para el análisis de imágenes y señales, de integración numérica, cálculo de transformadas de Fourier, elaboración de estadísticas, etc. La última versión es la 0.8 liberada el pasado 28 de julio.
  • matplotlib: Se trata de un módulo que ofrece la posibilidad de representar gráficamente conjuntos de datos, generando una visualización en pantalla o bien almacenando el gráfico en diversos formatos (PNG, PDF, EPS, etc.). La última versión disponible es la 1.0.0.

Se da la circunstancia de que a día de hoy, 27 de septiembre de 2010, ninguno de estos tres módulos se ha actualizado para su uso con Python 3.x ni 2.7.x, sino que esperan encontrar en el sistema alguna versión de la rama 2.6. Podríamos descargar el código fuente y compilarlo nosotros mismos, pero seguramente nos resultará difícil corregir los problemas que pudieran surgir debidos a los cambios que ha experimentado el lenguaje, especialmente en el caso de la versión 3.1, dado que no conocemos el código a fondo. Por ello lo recomendable es instalar Python 2.6.6 y esperar a que esos módulos se actualicen para después cambiar a la versión 3.1. Dicho cambio no representará un gran obstáculo, ya que existe una herramienta que se encarga de realizar las conversiones necesarias en el código fuente.

Partiendo de estas premisas (que recuerda son válidas en esta fecha, pero cambiarán en el futuro), los pasos a seguir para instalar todos los elementos y comprobar su funcionamiento serían los siguientes:

  • Descargamos el instalador de Python 2.6.6 para Windows y autorizamos su ejecución. Al finalizar ya tenemos Python instalado.
  • Para comprobar que Python funciona correctamente buscamos en la carpeta que se ha agregado a Todos los programas el elemento IDLE y lo elegimos, accediendo a una ventana como la que aparece en la imagen inferior. Nos encontramos con el intérprete de Python. Introducimos la sentencia import datetime y pulsamos Intro, escribimos print "Hola desde Python", datetime.date.today(), "Torre de Babel" y al pulsar de nuevo Intro debemos obtener la respuesta que aparece en azul en la imagen inferior.

  • A continuación descargamos los instaladores de NumPy, SciPy y matplotlib y los ejecutamos uno tras otro, aceptando en todos los casos las opciones por defecto.
  • Para probar que todos los módulos están ahí y operan correctamente abrimos de nuevo IDLE (si lo habíamos cerrado), seleccionamos File -> New Window para abrir una ventana de edición y escribimos el script que puede verse a continuación:
import numpy
from scipy import interpolate
from matplotlib import pyplot

x = numpy.arange(0,10,0.3)  # Secuencia de 0 a 10 en pasos de 0.3
y = numpy.sin(x)            # y[i] = sin(x[i])
pyplot.plot(x, y, 'o')      # Dibujar cada dato como un punto sólido

f = interpolate.interp1d(x,y) # Obtengo función de interpolación x/y
d = numpy.arange(0,10,0.1)    # Secuencia de 0 a 10 en pasos de 0.1
pyplot.plot(d, f(d), '-')     # Dibujar d y el valor interpolado como línea

pyplot.show()       # Mostrar la gráfica

Finalmente, basta con pulsar F5 para ejecutar el guión (habrá que guardarlo antes) y comprobar el resultado. Si aparece una ventana como la inferior, mostrando una gráfica de la función seno, es que todo ha ido bien.

Este guión usa la función arange() del módulo numpy, una función de interpolación del módulo scipy y el objeto pyplot de matplotlib para representar los datos, por lo que en pocas líneas comprobamos la correcta instalación de todos ellos. A partir de este momento ya tenemos todo lo necesario para usar Python en tareas de análisis de datos.