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
- Lanzamos Eclipse
- 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.
- Add site: Seleccionamos el Botón Add… de la parte superior, para elegir un site con el que trabajar.
- 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
- 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.
- 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.
- Install Details: Nos aparece un resumen de lo que vamos a instalar, que básicamente es el paquete PyDev. Le damos a Next.
- Licencia PyDev: Aparece la licencia de PyDev. Nos la leemos enterita (no espero menos de vosotros, XD), la aceptamos y le damos a Finish.
- 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.
- 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…
Esto debería hacer aparecer un listado de perspectivas, entre las cuales se haya la que queremos (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.
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.
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.
Hacemos click en New, y le damos el path al binario de python de nuestro 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,
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.
Podemos ver a continuación como se muestra nuestro proyecto Django en Eclipse.
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.
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.
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.
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.
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.
Veremos como nos pide el nombre de la app de la que queremos preparar las migraciones. Introducimos la nuestra: demo:
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.
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!
Muchas gracias, tu explicación fue excelente, me ayudo mucho, sos un genio!
¡Gracias!
gracias por tu tutorial
después de este paso: 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.
me aparece lo siguiente y no me ejecuta el servidor y realmente no se que hacer por favor alguna pista
Type ‘manage.py help ‘ for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[sessions]
clearsessions
[staticfiles]
collectstatic
ya descubrí la solución en argments dentro de la configuración de ejecución hay que colocarle runserver
Gracias por la ayuda realmente me sirvió tu esfuerzo
muchas gracias de verdad
¡Gracias!