16.4. Configuración IDE para escribir y depurar complementos
Aunque cada programador tiene su editor de texto/IDE preferido, aquí hay algunas recomendaciones para configurar IDE populares para escribir y depurar complementos de QGIS Python.
16.4.1. Complementos útiles para escribir complementos de Python
Algunos complementos son convenientes al escribir complementos de Python. Desde
, instala:Plugin reloader: Esto le permitirá recargar un complemento y realizar nuevos cambios sin reiniciar QGIS.
First Aid: Esto agregará una consola de Python y un depurador local para inspeccionar las variables cuando se genere una excepción desde un complemento.
Advertencia
Despite our constant efforts, information beyond this line may not be updated for QGIS 3. Refer to https://qgis.org/pyqgis/master for the python API documentation or, give a hand to update the chapters you know about. Thanks.
16.4.2. Una nota sobre la configuración de su IDE en Linux y Windows
On Linux, Todo lo que normalmente se debe hacer es agregar las ubicaciones de la biblioteca QGIS a la variable de entorno PYTHONPATH
del usuario. En la mayoría de las distribuciones, esto se puede hacer editando ~/.bashrc
or ~/.bash-profile
con la siguiente línea (probado en OpenSUSE Tumbleweed):
export PYTHONPATH="$PYTHONPATH:/usr/share/qgis/python/plugins:/usr/share/qgis/python"
Guarde el archivo e implemente la configuración del entorno mediante el siguiente comando de shell:
source ~/.bashrc
On Windows, debe asegurarse de tener la misma configuración de entorno y utilizar las mismas bibliotecas e intérprete que QGIS. La forma más rápida de hacerlo es modificar el archivo por lotes de inicio de QGIS.
Si utilizó el instalador de OSGeo4W, puede encontrarlo en la carpeta bin
de su instalación de OSGeo4W. Busca algo como C:\OSGeo4W\bin\qgis-unstable.bat
.
16.4.3. Depuración con Pyscripter IDE (Windows)
Para usar Pyscripter IDE, esto es lo que tienes que hacer:
Haz una copia de
qgis-unstable.bat
y renómbrelapyscripter.bat
.Ábrelo en un editor. Y elimine la última línea, la que inicia QGIS.
Agregue una línea que apunte a su ejecutable de Pyscripter y agregue el argumento de línea de comando que establece la versión de Python que se utilizará
También agregue el argumento que apunta a la carpeta donde Pyscripter puede encontrar la dll de Python utilizada por QGIS, puede encontrar esto en la carpeta bin de su instalación de 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 doble clic en este archivo por lotes, se iniciará Pyscripter, con la ruta correcta.
Más popular que Pyscripter, Eclipse es una opción común entre los desarrolladores. En la siguiente sección, explicaremos cómo configurarlo para desarrollar y probar complementos.
16.4.4. Depurar con Eclipse y PyDev
16.4.4.1. Instalación
Para utilizar Eclipse, asegúrese de haber instalado lo siguiente
QGIS 2.x
Es posible que también desee instalar ** Remote Debug **, un complemento de QGIS. Por el momento, todavía es experimental, habilite Complementos experimentales en de antemano.
Para preparar su entorno para usar Eclipse en Windows, también debe crear un archivo por lotes y usarlo para iniciar Eclipse:
Localice la carpeta donde
qgis_core.dll
reside. Normalmente este esC:\OSGeo4W\apps\qgis\bin
, pero si compiló su propia aplicación QGIS, esto está en su carpeta de compilación enoutput/bin/RelWithDebInfo
Localice su ejecutable
eclipse.exe
.Cree el siguiente script y utilícelo para iniciar eclipse al desarrollar complementos de QGIS.
call "C:\OSGeo4W\bin\o4w_env.bat" set PATH=%PATH%;C:\path\to\your\qgis_core.dll\parent\folder start /B C:\path\to\your\eclipse.exe
16.4.4.2. Configurando Eclipse
En Eclipse, cree un nuevo proyecto. Puede seleccionar * Proyecto general * y vincular sus fuentes reales más adelante, por lo que realmente no importa dónde coloque este proyecto.
Haz clic derecho en tu nuevo proyecto y elige
.Click en Acanzado y elige Enlace a ubicación alternativa (carpeta vinculada). En caso de que ya tenga fuentes que desee depurar, elija estas. En caso de que no lo haga, cree una carpeta como ya se explicó.
Ahora en la vista Explorador de proyecto, su árbol de fuentes aparece y puede comenzar a trabajar con el código. Ya tiene resaltado de sintaxis y todas las otras potentes herramientas IDE disponibles.
16.4.4.3. Configurar el depurador
Para que el depurador funcione:
Cambiar a la perspectiva de depuración en Eclipse (
).inicie el servidor de depuración PyDev eligiendo
.Eclipse ahora está esperando una conexión de QGIS a su servidor de depuración y cuando QGIS se conecte al servidor de depuración, le permitirá controlar los scripts de Python. Eso es exactamente para lo que instalamos el complemento Depuración remota. Así que inicie QGIS en caso de que aún no lo haya hecho y haga clic en el símbolo de error.
Ahora puede establecer un punto de interrupción y tan pronto como el código lo golpee, la ejecución se detendrá y podrá inspeccionar el estado actual de su complemento. (El punto de interrupción es el punto verde en la imagen de abajo, establezca uno haciendo doble clic en el espacio en blanco a la izquierda de la línea donde desea que se establezca el punto de interrupción).
Una cosa muy interesante que puede utilizar ahora es la consola de depuración. Asegúrese de que la ejecución esté detenida en un punto de interrupción antes de continuar.
Abra la vista de la consola (Debug Server que no es muy interesante. Pero hay un botón Abrir consola que le permite cambiar a una consola PyDev Debug más interesante.
). Mostrará la consolaHaga clic en la flecha junto al: guilabel: botón «Abrir consola» y seleccione * Consola PyDev *. Se abre una ventana para preguntarle qué consola desea iniciar.
Elija * PyDev Debug Console *. En caso de que esté atenuado y le indique que inicie el depurador y seleccione el marco válido, asegúrese de que tiene el depurador remoto adjunto y se encuentra actualmente en un punto de interrupción.
Ahora tiene una consola interactiva que le permite probar cualquier comando desde el contexto actual. Puedes manipular variables o hacer llamadas a API o lo que quieras.
Truco
Un poco molesto es que cada vez que ingresa un comando, la consola vuelve al servidor de depuración. Para detener este comportamiento, puede hacer clic en el botón * Fijar consola * cuando esté en la página del servidor de depuración y debe recordar esta decisión al menos para la sesión de depuración actual.
16.4.4.4. Haciendo que eclipse entienda la API
Una característica muy útil es que Eclipse conozca realmente la API de QGIS. Esto le permite verificar su código en busca de errores tipográficos. Pero no solo esto, también permite que Eclipse lo ayude con el autocompletado desde las importaciones hasta las llamadas a la API.
Para hacer esto, Eclipse analiza los archivos de la biblioteca de QGIS y obtiene toda la información. Lo único que tienes que hacer es decirle a Eclipse dónde encontrar las bibliotecas.
Click
.Verá su intérprete 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 más interesantes para nosotros son * Bibliotecas * y * Forced Builtins *.
Primero abra la pestaña Bibliotecas.
Agregue una nueva carpeta y elija la carpeta de Python de su instalación de QGIS. Si no sabe dónde está esta carpeta (no es la carpeta de complementos):
Abrir QGIS
Inicia una consola de python
Introduce
qgis
y presione Entrar. Le mostrará qué módulo QGIS utiliza y su ruta.
Quite el
/qgis/__init__.pyc
final de esta ruta y obtendrá la ruta que está buscando.
También debe agregar su carpeta de complementos aquí (está en
python/complementos
debajo de la carpeta user profile).Luego salte a la pestaña * Forced Builtins *, haga clic en * New … * e ingrese `` qgis “”. Esto hará que Eclipse analice la API de QGIS. Probablemente también desee que Eclipse conozca la API de PyQt. Por lo tanto, también agregue PyQt como incorporado forzado. Eso probablemente ya debería estar presente en la pestaña de bibliotecas.
Click en Aceptar y ya estas listo.
Nota
Cada vez que cambia la API de QGIS (por ejemplo, si está compilando el maestro QGIS y el archivo SIP cambió), debe volver a esta página y simplemente hacer clic en Aplicar. Esto permitirá que Eclipse vuelva a analizar todas las bibliotecas.
16.4.5. Depurar con PyCharm en Ubuntu con un QGIS compilado
PyCharm es un IDE para Python desarrollado por JetBrains. Hay una versión gratuita llamada Community Edition y una de pago llamada Professional. Puede descargar PyCharm en el sitio web: https://www.jetbrains.com/pycharm/download
Suponemos que ha compilado QGIS en Ubuntu con el directorio de compilación proporcionado ~/dev/qgis/build/master
. No es obligatorio tener un QGIS autocompilado, pero solo esto ha sido probado. Los caminos deben adaptarse.
En PyCharm, en su: guilabel: Propiedades del proyecto, Intérprete del proyecto, vamos a crear un entorno virtual Python llamado `` QGIS``.
Haga clic en el engranaje pequeño y luego Añadir.
Selecciona Virtualenv environment.
Seleccione una ubicación genérica para todos sus proyectos de Python, como
~/dev/qgis/venv
porque usaremos este intérprete de Python para todos nuestros complementos.Elija un intérprete base de Python 3 disponible en su sistema y marque las siguientes dos opciones Inherit global site-packages y Poner a disposición de todos los proyectos.
Click en Aceptar, regrese al pequeño engranaje y click en Mostrar todo.
En la nueva ventana, seleccione su nuevo intérprete `` QGIS “” y haga clic en el último icono del menú vertical Mostrar rutas para el intérprete seleccionado.
Finalmente, agregue la siguiente ruta absoluta a la lista
~/dev/qgis/build/master/output/python
.
Reinicie PyCharm y podrá comenzar a usar este nuevo entorno virtual de Python para todos sus complementos.
PyCharm conocerá la API de QGIS y también la API de PyQt si usa Qt proporcionado por QGIS como from qgis.PyQt.QtCore import QDir
. El autocompletado debería funcionar y PyCharm puede inspeccionar su código.
En la versión profesional de PyCharm, la depuración remota funciona bien. Para la edición Community, la depuración remota no está disponible. Solo puede tener acceso a un depurador local, lo que significa que el código debe ejecutarse dentro de PyCharm (como script o unittest), no en QGIS. Para el código Python que se ejecuta en QGIS, puede usar el complemento First Aid mencionado anteriormente.
16.4.6. Depurar usando PDB
Si no usa un IDE como Eclipse o PyCharm, puede depurar usando PDB, siguiendo estos pasos.
Primero agregue este código en el lugar donde le gustaría depurar
# Use pdb for debugging import pdb # also import pyqtRemoveInputHook from qgis.PyQt.QtCore import pyqtRemoveInputHook # These lines allow you to set a breakpoint in the app pyqtRemoveInputHook() pdb.set_trace()
Luego ejecute QGIS desde la línea de comando.
En Linux haga:
$ ./Qgis
En macOS haga:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
¡Y cuando la aplicación llegue a su punto de interrupción, puede escribir en la consola!
- PENDIENTE:
Agregar información de prueba