Configuración IDE para escribir y depurar complementos

Aunque cada programador tiene si editos IDE/texto preferido, aquí están algunas recomendaciones para configurar los IDE’s populares para escribir y depurar complementos Python QGIS.

Una nota sobre la configuración su IDE sobre Windows

Sobre Linux no hay configuración adicional necesaria para desarrollar complementos. Pero sobre Windows se necesita asegurar que tiene la misma configuración de entorno y utilizan la mismas librerías y como interprete QGIS. La manera más rápida de hacer esto, es modificar el archivo de inicio por lotes de QGIS.

If you used the OSGeo4W Installer, you can find this under the bin folder of your OSGeo4W install. Look for something like C:\OSGeo4W\bin\qgis-unstable.bat.

Para usar IDE Pyscripter, Aquí esta lo que tiene que hacer:

  • Make a copy of qgis-unstable.bat and rename it pyscripter.bat.

  • Abra esto en un editor. Y elimine la ultima linea, una que inicia con QGIS.

  • Añadir una linea que apunte al ejecutable Pyscripter y añada el argumento en la linea de comando que establece la versión de Python a ser utilizado (2.7 en el caso de QGIS 2.0)

  • También añadimos el argumento que apunta en la carpeta donde el Pyscripter puede encontrarse el dll de Python utilizado por QGIS, se puede encontrar esto bajo la carpeta bin de su instalación OSGeoW

    @echo off
    SET OSGEO4W_ROOT=C:\OSGeo4W
    call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
    call "%OSGEO4W_ROOT%"\bin\gdal16.bat
    @echo off
    path %PATH%;%GISBASE%\bin
    Start C:\pyscripter\pyscripter.exe --python25 --pythondllpath=C:\OSGeo4W\bin
    

Ahora cuando haga clie en el archivo por lotes, iniciará el Pyscripter, con la ruta correcta.

Más popular que Pyscripter, Eclipse es una opción común entre los desarrolladores. En las siguientes secciones, vamos a explicar cómo configurarlo para desarrollar y probar los complementos. Para preparar el entorno para el uso de Eclipse en Windows, también debe crear un archivo por lotes y utilizarlo para iniciar Eclipse.

To create that batch file, follow these steps:

  • Busque la carpeta donde el archivo :qgis_core.dll reside. Normalmente esto es C:OSGeo4Wappsqgisbin, pero cuando se ha compilado su aplicacion QGIS esto es su carpeta de compilación en output/bin/RelWithDebInfo

  • Busque su ejecutable file:eclipse.exe.

  • Cree el siguiente script y utilice esto para iniciar eclipse cuando desarrolle complementos en QGIS.

call "C:\OSGeo4W\bin\o4w_env.bat"
set PATH=%PATH%;C:\path\to\your\qgis_core.dll\parent\folder
C:\path\to\your\eclipse.exe

Depure utilizando eclipse y PyDev

Instalación

Para utilizar Eclipse, asegurese que ha instalado lo siguiente

Preparación QGIS

Hay un poco de preparación que hacer sobre sí mismo en QGIS. Dos complementos son de interés: Depuración remota y Recargador de complementos.

  • Go to Plugins ‣ Manage and Install plugins...
  • Search for Remote Debug ( at the moment it’s still experimental, so enable experimental plugins under the Options tab in case it does not show up). Install it.
  • Busque Recargador de complementos e instálelo también. Esto dejara que recargue un complemento en lugar de tener que cerrar y reiniciar QGIS para tener recargado el complemento.

Configuración de eclipse

En Eclipse, crear un nuevo proyecto. Se puede seleccionar Proyecto General y enlazar su fuente real después.por lo que realmente no importa donde se coloque el proyecto.

../../_images/eclipsenewproject.png

Proyecto de Eclipse

Ahora haga clic derecho sobre su nuevo proyecto y elija Nuevo ‣ Carpeta.

Haga clic en [Avanzado] y elija Enlace a la ubicación alterna (Carpeta enlazada). En caso que ya tenga los recursos que desea depurar, elija estos, en caso que no lo haga, cree una carpeta como ya se explicó.

Ahora en la vista Explorador de proyecto, su arbol de recursos aparece y puede empezar a trabajar con el código. Ya se tiene la sintaxis resaltada y todas las otras herramientas del IDE de gran alcance disponible.

Configurando el depurador

Para consegir el funcionamiento, cambie a la perspectiva de Depurar en Eclipse (Window ‣ Abrir perspectiva ‣ Otro ‣ Depurar).

Now start the PyDev debug server by choosing PyDev ‣ Start Debug Server.

Eclipse is now waiting for a connection from QGIS to its debug server and when QGIS connects to the debug server it will allow it to control the python scripts. That’s exactly what we installed the Remote Debug plugin for. So start QGIS in case you did not already and click the bug symbol.

Now you can set a breakpoint and as soon as the code hits it, execution will stop and you can inspect the current state of your plugin. (The breakpoint is the green dot in the image below, set one by double clicking in the white space left to the line you want the breakpoint to be set).

../../_images/breakpoint.png

Punto de interrupción

Una cosa muy interesante que puede hacer uso de ahora es la consola de depuración. Asegurese que la ejecución esta detenida actualmente en un punto de interrupción, antes de continuar.

Open the Console view (Window ‣ Show view). It will show the Debug Server console which is not very interesting. But there is a button [Open Console] which lets you change to a more interesting PyDev Debug Console. Click the arrow next to the [Open Console] button and choose PyDev Console. A window opens up to ask you which console you want to start. Choose PyDev Debug Console. In case its greyed out and tells you to Start the debugger and select the valid frame, make sure that you’ve got the remote debugger attached and are currently on a breakpoint.

../../_images/console-buttons.png

consola de depuración PyDev

Se tiene ahora una consola interactiva que le permite probar cualquier comando desde dentro del contexto actual. Se pueden manipular variables o hacer llamadas al API o lo que quiera.

A little bit annoying is, that every time you enter a command, the console switches back to the Debug Server. To stop this behavior, you can click the Pin Console button when on the Debug Server page and it should remember this decision at least for the current debug session.

Hacer que eclipse entienda el API

Una característica muy útil es tener Eclipse que realmente conozca acerca de la API de QGIS. Esto le permite comprobar el código de errores tipográficos. Pero no sólo esto, sino que también permite que Eclipse le ayude con la terminación automática de las importaciones a llamadas a la API .

Para ello, Eclipse analiza los archivos de la biblioteca de QGIS y recibe toda la información que hay. Lo único que tiene que hacer es decirle a Eclipse, donde se encuentran las librerías.

Click Window ‣ Preferences ‣ PyDev ‣ Interpreter ‣ Python.

Verá su interpretador de python configurado en la parte superior de la ventana (en este momento python2.7 para QGIS) y algunas pestañas en la parte inferior. Las pestañas interesantes para nosotros son Librerías y Elementos incluídos forzados

../../_images/interpreter-libraries.png

consola de depuración PyDev

First open the Libraries tab. Add a New Folder and choose the python folder of your QGIS installation. If you do not know where this folder is (it’s not the plugins folder) open QGIS, start a python console and simply enter qgis and press Enter. It will show you which QGIS module it uses and its path. Strip the trailing /qgis/__init__.pyc from this path and you’ve got the path you are looking for.

You should also add your plugins folder here (on Linux it is ~/.qgis2/python/plugins).

Next jump to the Forced Builtins tab, click on New... and enter qgis. This will make Eclipse parse the QGIS API. You probably also want Eclipse to know about the PyQt4 API. Therefore also add PyQt4 as forced builtin. That should probably already be present in your libraries tab.

Haga clic en Aceptar y ya esta.

Nota

Every time the QGIS API changes (e.g. if you’re compiling QGIS master and the SIP file changed), you should go back to this page and simply click Apply. This will let Eclipse parse all the libraries again.

Depure utilizando PDB

Si no usa un IDE como Eclipse, puede depurar usando PDB, siguiendo los siguientes pasos.

Primero adicione este código en el lugar donde desea depurar

# Use pdb for debugging
import pdb
# These lines allow you to set a breakpoint in the app
pyqtRemoveInputHook()
pdb.set_trace()

Entonces ejecute QGIS desde la línea de comando.

Sobre Linux haga:

$ ./Qgis

Sobre Mac OS haga:

$ /Applications/Qgis.app/Contents/MacOS/Qgis

Y cuando la aplicación pegue su punto de interrupción puede escribir en la consola!

PENDIENTE:

Adicionar información de prueba