En el POST de hoy veremos como configurar Eclipse para editar y debugar proyectos en python, bajo el framework Django. Para ello, recurriremos a Pydev, que es un IDE de Python para Eclipse.

Entre sus características más interesantes, me gustaría destacar las siguientes:

  • Integración con Django
  • Autocompletado de codigo
  • Imports automáticos
  • Análisis de código
  • Debugger
  • Consola interactiva
  • Integración de unittest

Instalación

Lo primero es, en caso de no disponer de Eclipse, descargarnos la versión básica desde la web de Eclipse (o bien aquella que nos vaya bien, en función de los lenguajes de programación con los que solemos trabajar).

Recordemos que Eclipse en sí mismo, está desarrollado en Java, por lo que será necesario que tengas instalada la Máquina Virtual de Java.

Instalar PyDev

  1. Lanzamos Eclipse
  2. New Software: En la barra superior, seleccionamos Help > New Software, y se nos abre una ventana que dice Available Software con una serie de opciones.
  3. Add site: Seleccionamos el Botón Add… de la parte superior, para elegir un site con el que trabajar.
    Seleccionamos Add
  4. PyDev location: En name ponemos un texto que nos parezca suficientemente descriptivo, y en location, introducimos el repositorio de pydev, es decir: http://pydev.org/updates
    Introducimos PyDev location
  5. Seleccionar PyDev location: Llegado este punto debería estar seleccionado el repositorio que acabamos de añadir (en caso contrario, abrir el desplegable Work with: y seleccionar el repositorio que acabamos de introducir.
  6. Marcar PyDev: En el listado deberíamos ver PyDev y PydevMyLyn Integration. A menos que queráis usar Mylyn, marcamos solo PyDev, y seleccionamos Next.
    enter image description here
  7. Install Details: Nos aparece un resumen de lo que vamos a instalar, que básicamente es el paquete PyDev. Le damos a Next.
  8. Licencia PyDev: Aparece la licencia de PyDev. Nos la leemos enterita (no espero menos de vosotros, XD), la aceptamos y le damos a Finish.
  9. Certificados de PyDev: Durante el proceso de instalación es posible que nos pregunte si confiamos en el certificado de Brainy Software. Ellos son los desarrolladores de PyDev, y por lo que a mi respecta son de confianza, así que le doy a OK.
    Certificados de PyDev
  10. Reiniciar Eclipse: Al acabar la instalación nos pide reiniciar Eclipse. Selecciono YES.

Actualizar PyDev

Es posible que la versión que nos hemos instalado de PyDev no sea la más reciente, por lo que es altamente recomendable mirar si existe alguna actualización, seleccionando:
Help > Check for Updates

Eclipse comprobará automáticamente si hay actualizaciones de nuestros plugins (PyDev incluido), y en caso de haberlas nos guiará durante el proceso de actualización.

Perspectiva PyDev

Para poder usar PyDev, tenemos que activar su perspectiva. Esto lo hacemos seleccionando *Window >Open Perspective > Other…
Selección de perspectiva

Esto debería hacer aparecer un listado de perspectivas, entre las cuales se haya la que queremos (PyDev).

Selección de PyDev

Seleccionamos la perspectiva PyDev, y le damos a OK.

De entrada, es probable que no veamos ningún cambio, salvo que ahora en la parte superior derecha, tenemos un icono con el logo de PyDev y su nombre. No obstante, desde esta perspectiva, el editor puede trabajar con sintaxis python.

Nuevo proyecto Django

Creando el proyecto Django con VirtualEnvWrapper

Para ver realmente que todo funciona OK, crearemos un proyecto Django, con VirtualEnvWrapper, y luego lo importaremos en Eclipse.

Abrimos el terminal, y desde nuestro directorio de trabajo, escribimos:

miusuario$ mkvirtualenv entornoDemoProject
(entornoDemoProject)$ pip install django
(entornoDemoProject)$ django-admin.py startproject demo_project
(entornoDemoProject)$ cd demo_project
(entornoDemoProject)$ chmod u+x manage.py
(entornoDemoProject)$ ./manage.py startapp demo

Importando el proyecto en Eclipse

Desde Eclipse, seleccionamos File > New > Project…

Esto nos abre un selector, donde podemos ver una carpeta PyDev. La abrimos, y seleccionamos el PyDev Django Project.
Select PyDev Django Project

Como nombre de proyecto, utiilzamos el de la carpeta que contiene nuestro proyecto Django, en este caso demo_project. Recordemos que el entorno de proyectos de Eclipse debería ser la misma carpeta en la que hemos creado nuestro proyecto. De este modo, eclipse automáticamente identificará la carpeta con el nombre del proyecto, e incorporará los archivos contenidos en la misma dentro del proyecto.

project Name

No obstante, como estamos trabajando con VirtualEnv, tendremos que utilizar el intérprete de Python de nuestro VirtualEnv.

Hacemos click en el enlace para configurar un nuevo interprete, y se nos abre la siguiente ventana.

seleccionar interprete python

Hacemos click en New, y le damos el path al binario de python de nuestro virtualenv.

path a interprete python en virtualenv

DETALLE: Puedes obtener el path de tu virtualenv desde consola, una vez cargado el entorno, imprimiendo la variable VIRTUAL_ENV, es decir:

(entornoDemoProject)$ echo $VIRTUAL_ENV

Con lo que solo necesitarás buscar, dentro de ese directorio, el ejecutable de python (en el caso linux, esto es en la carpeta bin del path obtenido).

Acto seguido nos aparece un listado de paths a incluir, están todos marcados así que seleccionamos Next, y cerramos la ventana con Ok.

De nuevo en la ventana de selección de intérprete, seleccionamos el interprete recién creado,

selección de intérprete

y seleccionamos, de nuevo, Next.

En nuestro caso no tenemos proyectos relacionados, por lo que en el siguiente paso seleccionamos directamente Next, y vamos a la vista de BBDD.
Por defecto está seleccionado sqlite3, que está bien para desarrollo, por lo que seleccionamos Finish.

sqlite3

Podemos ver a continuación como se muestra nuestro proyecto Django en Eclipse.

PyDev

Resolución de problemas

Es probable que al hacer esto, PyDev os haya alterado la estructura del proyecto. Esto pasa con algunas versiones de PyDev y Eclipse. Si os fijáis en la captura anterior, los archivos _init_.py, settings.py, urls.py y wsgy.py, están fuera de la carpeta de configuración demo_project, cuando deberían estar dentro de la misma.

Para evitar este inconveniente, lo que podemos hacer es, en lugar de seguir los pasos anteriores para crear un proyecto tipo PyDev Django Project, optar por seleccionar un proyecto tipo PyDev Project. Veremos como en este caso se respeta la estructura de los ficheros internos, y para poder trabajar como si fuera un proyecto Django, solo tendremos que hacer click con el botón derecho sobre el proyecto, y seleccionar PyDev > Set As Django Project.

set as django project

Véase de paso, en la imagen anterior, como la estructura del proyecto ahora si que es la deseada.

Configurar las propiedades del proyecto

Debemos indicarle a PyDev donde se encuentran el archivo manage.py, y el módulo de settings.

Seleccionamos el proyecto con botón derecho y hacemos click en Properties.
En la ventana de settings que aparece, seleccionamos PyDev – Django, e incluimos las rutas (relativas al proyecto), a los archivos manage.py y el módulo settings.

enter image description here

De paso, en PyDev – Interpreter/Grammar, deberíamos comprobar que el interprete de Python es el que hemos creado antes, y en caso contrario, asignarlo.

Ejecución desde Eclipse

Ejecutar el proyecto

Para ejecutar el proyecto vamos a la barra superior, hacemos click en la flecha descendiente al lado del icono verde Run, y el menu que aparece, seleccionamos:
Run as > PyDev: Dango

Esto crea una configuración inicial de ejecución del proyecto y lo ejecuta. Debemos parar la ejecución, dandole al icono de Stop rojo que aparece en la vista de consola.

Configuración de ejecución

Ahora que ya tenemos una configuración de ejecución, podemos abrir igual que antes el menú de Run, pero esta vez seleccionamos Run configurations.

Se abre una ventana, donde en el panel lateral podemos ver una lista entre la que destaca PyDev Django, que a su vez tiene un subelemento, que es nuestra configuración de ejecución.
Le podemos dar el nombre que queramos, y es importante quue vayamos a la pestaña Interpreter y escojamos de nuevo el intérprete de Python de nuestro VirtualEnv. No olvidemos hacer Apply.

Otro cambio práctico que podemos hacer es, desde la pestaña Common, seleccionar Display in favorites menu tanto de Debug como de Run, para que así, la proxima vez que abramos el menu de Run o Debug, aparezca directamente esta configuración de ejecución ya lista para seleccionar.

Eclipse Run Config

Si hemos seguido los pasos anteriores, solo hace falta darle al icono de ejecución en la barra superior, y veremos por consola como aparece el texto que nos sale habitualmente cuando ejecutamos ./manage.py runserver por consola.

pydev runserver django

Migraciones

Código a migrar

Creamos un modelo muy básico de Django para ver como usar las migraciones desde Eclipse.

Abrimos demo_project/demo/models.py y escribimos:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)

    def __str__(self):
        return self.title + ', by ' + self.author;

Además, abrimos demo_project/demo_project/settings.py, y añadimos la app demo al proyecto:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo'
)

Migración desde Eclipse

Seleccionamos el proyecto con el botón derecho y vamos a Django > Make Migrations.

make migrations 1

Veremos como nos pide el nombre de la app de la que queremos preparar las migraciones. Introducimos la nuestra: demo:

make migrations 2

Por la salida de consola veremos como se prepara la migración.

A continuación vamos de nuevo al proyecto, botón derecho, Django > Migrate, y veremos por la salida de consola como se ejecuta la migración.

Consola interactiva

Seleccionando sobre el proyecto con el botón derecho, podemos ir a Django > Shell with Django Environment, lo que creará una consola interactiva de django con el entorno de nuestro proyecto cargado, de modo que podemos usar nuestros modelos, por ejemplo.

shell with django

Debugar

Una de las mayores aportaciones de PyDev, es la capacidad de debugar nuestro proyecto Django.

De forma similar a la ejecución con Run, podemos ir a la barra superior, seleccionar el icono verde de Debug, y pulsar sobre la configuración de ejecución que hemos creado antes.

Automáticamente se ejecuta el proyecto, y Eclipse nos sugiere cargar la perspectiva de Debug, cosa que aceptaremos.

Para poner un breakpoint en una linea de código, solo debemos hacer doble click en el margen izquierdo de la linea, y aparecerá un punto verde. Cuando el código pase por dicho punto, automáticamente se parará y podremos analizar variables y demás, como en qualquier debugger.

Y con esto, cerramos algunas de las características más interesantes de PyDev para Eclipse. Espero que haya sido de ayuda.

¡Saludos!