Curso de Python Avanzado

Logo de Python

Descargar todo el contenido completo

Información

Este Curso en Python Avanzado pretende completar el contenido del Curso de Iniciación, introduciendo técnicas más complejas y enfatizando en las buenas prácticas para la construcción de software orientado a la producción.

¿Cuando?

Todos los días del 9 al 14 de Mayo, de 9 a 14:30 de la mañana. 25 horas en total.

¿Dónde?

En la sala de juntas del Instituto Andaluz de Astrofísica.

Tutorías

Podéis realizar consultas sobre los contenidos del curso al profesor en su dirección de correo electrónico: raskolnikov@gnu.org

Pizarra Virtual

Vamos utilizar una pizarra virtual online para facilitar la interacción en la corrección de ejercicios.

Accede aquí a la pizarra virtual

Requisitos

Para realizar el curso es recomendable utilizar un ordenador para seguir los ejemplos y ejercicios.

Especialmente durante el cuarto día de clase será necesario utilizar una distribución basada en Debian , como Ubuntu o la completamente libre Trisquel.

Máquina virtual

Si no disponéis de una distribución de GNU/Linux basada en Debian lo más fácil es que os instaléis la máquina virtual basada en VirtualBox que hemos preparado.

Os podéis descargar la máquina virtual aquí. Las instrucciones para instalarla las podéis encontrar en la web del Curso de Iniciación.

Contenidos

Bloque 1: Interfaces Gráficas

Requisitos

Para este tema hacen falta Glade, GTK y sus bindings para Python, PyGTK. Se pueden instalar en un sistema basado en Debian con el comando:

sudo apt-get install python-gtk2-dev glade

Si usáis el entorno Gnome, es mejor instalar:

sudo apt-get install glade-gnome

Este software está preinstalado en la máquina virtual que se describe más arriba.

Bloque 2: Producción de Software

Requisitos

En este bloque es necesario el software PyFlakes, PyLint y PyChecker, en el tema 6. Además, hace falta el compilador GCC en tema 7. En el tema 8 es necesario Stdeb y Setuptools.

Todo esto puede instalarse en una distribución basada en Debian con el comando:

$ sudo apt-get install pyflakes pylint pychecker build-essential \
                       python-stdeb python-setuptools

Bloque 3: Sistemas Web

Para este bloque, que finalmente no dio tiempo a dar, no llegamos a preparar materiales específicos. Sin embargo, os dejo los siguientes enlaces y materiales que pueden ser útiles para guiar vuestro estudio.

  1. Diapositivas de curso de introducción a Django

    Estas diapositivas son de un curso de introducción a Django que cubre todo y más de lo que pensábamos dar en nuestro curso. Buena parte de las diapositivas están organizadas a modo de tutorial y puede ser útil seguirlas paso a paso para realizar una primera aproximación a Django.

  2. Documentación oficial de Django

    La documentación oficial de Django es muy extensiva. A parte de la documentación de referencia, es muy recomendable seguir el tutorial paso a paso para realizar una primera incursión en el sistema.

  3. Código fuente del proyecto YAAS

    El año pasado programé el proyecto Yet Another Auction Service como parte de un curso de desarrollo web. Es una página de subastas muy sencilla, que puede servir de ejemplo. Como apuntes interesantes, tiene una API web basada en REST, pruebas de unidad usando el sistema específico de Django y presenta gráficas usando Matplotlib.

Material adicional

Configuración de Emacs

A algunos alumnos os ha gustado las facilidades que ofrece Emacs el como editor de Python. Os indico aquí los trucos especiales de nuestra configuración configuración personal de Emacs.

Integración de IPython

Lo primero que necesitáis es el python-mode avanzado mantenido por la comunidad de Emacs, que sustituye al que viene por defecto con el paquete. El módulo pymacs además permite extender Emacs en lenguaje de programación Python. Los instalamos en Debian y derivados con:

$ sudo apt-get install pymacs python-mode ipython

Para integrar IPython correctamente es necesario un módulo adicional para Emacs, que podéis descargar aquí: ipython.el

Una vez hecho esto, debéis indicar a Emacs la carpeta dónde tenéis instalado el módulo y que lo cargue. Por ejemplo, yo lo tengo instalado en ~/.emacs.d/lisp/ipython.el, y mi fichero de configuración de Emacs ~/.emacs incluye estas lineas:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp"))

(require 'ipython)

Una vez hecho esto, ya podéis lanzar el intérprete IPython dentro de Emacs ejecutando M-x py-shell o directamente con C-c !. Cuando está abierta, podéis enviar el fichero de Python actual entero al intérprete de Python ejecutando C-c C-c. Además, mi fichero de configuración de Emacs contiene:

(eval-after-load "python-mode"
'(progn
   (add-hook 'python-mode-hook
             (lambda ()
               (local-set-key (kbd "C-c C-e") 'py-execute-region)))))

Una vez configurado así Emacs permite enviar al intérprete sólo la región seleccionada actualmente con el comando C-c C-e.

Integración de PyFlakes

Como veremos en el tema 7 del curso, el programa PyFlakes permite realizar algunas comprobaciones de errores de programación en Python, como comprobar que las variables que usamos han sido declaradas, o que los import que realizamos se usan realmente en el código.

Podemos hacer que Emacs muestre automáticamente en rojo las lineas erróneas detectadas por PyFlakes integrándolo con el módulo flymake, que viene de serie con Emacs desde su versión 23. En concreto, las lineas de configuración necesarias son:

(require 'flymake)

(defun flymake-pyflakes-init ()
  ;; Make sure it's not a remote buffer or flymake would not work
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                   'flymake-create-temp-inplace))
       (local-file (file-relative-name
                    temp-file
                    (file-name-directory buffer-file-name))))
    (list "pyflakes" (list local-file))))

(setq flymake-allowed-file-name-masks '(("\\.py\\'"  flymake-pyflakes-init)))

FlyMake es una herramienta muy potente, nos permite además integrar el resaltado de errores en muchos otros formatos, como LaTeX, o incluso otros compilados como C. Tenéis más información aquí.

Parece que FlyMake no se lleva muy bien con IPython, pero las siguientes lineas de configuración solucionan el problema:

(add-hook 'python-mode-hook
        (lambda ()
          (unless (eq buffer-file-name nil) (flymake-mode t))))

¡A disfrutar programando en Python con Emacs!


(c) Juan Pedro Bolívar Puente 2011Código fuente ReStructuredText