Instellingen voor de IDE voor het schrijven en debuggen van plug-ins

Hoewel elke programmeur zijn eigen voorkeur heeft voor een IDE/tekstbewerker, zijn hier enkele aanbevelingen voor het instellen van enkele populaire IDE’s voor het schrijven en debuggen van plug-ins voor Python in QGIS.

Een opmerking voor het configureren van uw IDE op Windows

Op Linux is geen aanvullende configuratie nodig om plug-ins te ontwikkelen. Maar op Windows dient u er voor te zorgen dat u dezelfde instellingen voor de omgeving heeft en dezelfde bibliotheken en interpreter gebruikt als QGIS. De snelste manier om dit te doen is om het opstartbestand van QGIS aan te passen.

Als u het installatieprogramma van OSGeo4W gebruikte, vindt u dit in de map bin van uw installatie van OSGeoW. Zoek naar iets als C:\OSGeo4W\bin\qgis-unstable.bat.

Voor het gebruiken van Pyscripter IDE, is dit wat u moet doen:

  • Maak een kopie van qgis-unstable.bat en hernoem die naar pyscripter.bat.

  • Open het in een bewerker. En verwijder de laatste regel, die welke QGIS laat starten.

  • Voeg een regel toe die verwijst naar uw uitvoerbare bestand van Pyscripter en voeg het argument voor de opdrachtregel toe dat de te gebruiken versie van Python instelt (2.7 in het geval van QGIS 2.0)

  • Voeg ook het argument toe dat verwijst naar de map waar Pyscripter de Python dll kan vinden die wordt gebruikt door QGIS, u vindt deze in de map bin van uw installatie van 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

Wanneer u nu dubbelklikt op dit batch-bestand, zal dat Pyscripter starten, met het juiste pad.

Meer populair dan Pyscripter, is Eclipse een veel voorkomende keuze bij ontwikkelaars. In de volgende gedeelten zullen we uitleggen hoe het te configureren voor het ontwikkelen en testen van plug-ins. U zou ook een batch-bestand moeten maken en dat gebruiken om Eclipse te starten om uw omgeving voor te bereiden om Eclipse in Windows te gebruiken.

Volg deze stappen om het batch-bestand te maken.

  • Zoek naar de map waar het bestand file:qgis_core.dll is geplaatst. Normaal gesproken is dit C:OSGeo4Wappsqgisbin, maar als u uw eigen toepassing in QGIS compileerde is het in de map waar uw het bouwde in output/bin/RelWithDebInfo

  • Zoek naar uw uitvoerbare bestand eclipse.exe.

  • Maak het volgende script en gebruik dat om Eclipse te starten bij het ontwikkelen van plug-ins voor 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

Debuggen met behulp van Eclipse en PyDev

Installatie

Zorg er voor, om Eclipse te kunnen gebruiken, dat u het volgende heeft geïnstalleerd

  • Eclipse
  • Aptana Eclipse Plugin of PyDev

  • QGIS 2.0

QGIS voorbereiden

Er moet enige voorbereiding worden gedaan in QGIS zelf. Twee plug-ins zijn van belang: Remote Debug en Plugin reloader.

  • Ga naar Plug-ins ‣ Beheer en installeer plug-ins

  • Zoek naar Remote Debug (op dit moment is die nog steeds experimenteel, dus schakel Experimentele plug-ins in onder de tab Opties in het geval hij niet wordt weergegeven). Installeer het.

  • Zoek naar Plugin reloader en installeer die ook. Dit stelt u in staat een plug-in opnieuw op te starten in plaats va die te moeten sluiten en QGIS opnieuw op te moeten starten om hem opnieuw te laden.

Eclipse instellen

Maak, in Eclipse, een nieuw project. U kunt General Project selecteren en uw echte bronnen later koppelen, dus het maakt niet echt uit waar u dit project plaatst.

../../_images/eclipsenewproject.png

Eclipse-project

Klik nu met rechts op uw nieuwe project en kies New ‣ Folder.

Klik op [Advanced] en kies Link to alternate location (Linked Folder). In het geval dat u al bronnen heeft die u wilt debuggen, kies die, in het geval u die niet heeft, maak een map aan zoals al eerder is uitgelegd

Nu zal in de weergave Project Explorer uw boom van bronnen opkomen en kunt u beginnen met het werken aan de code. U heeft al accentuering van syntaxis en alle andere krachtige gereedschappen voor de IDE beschikbaar.

Configureren van de debugger

Schakel naar het perspectief Debug in Eclipse (Window ‣ Open Perspective ‣ Other ‣ Debug) om de debugger werkend te krijgen.

Start nu de server voor debuggen van PyDev door te kiezen PyDev ‣ Start Debug Server.

Eclipse wacht nu op een verbinding vanuit QGIS naar zijn server voor debuggen en wanneer QGIS verbindt met de server voor debuggen zal dat het mogelijk maken de scripts van Python te beheren. Dat is dus precies waarom we de plug-in Remote Debug hebben geïnstalleerd. Dus start QGIS voor het geval u dat nog niet gedaan heeft en click op het symbool bug.

Nu kunt u een onderbrekingspunt instellen en zodra als dat wordt tegengekomen door de code, zal de uitvoering stoppen en kunt u de huidige status van uw plug-in inspecteren. (Het onderbrekingspunt is de groene punt in de afbeelding hieronder, stel er een in door dubbel te klikken in de witte ruimte links van de regel waarvoor u wilt dat het onderbrekingspunt wordt ingesteld)

../../_images/breakpoint.png

Onderbrekingspunt

Een zeer interessant ding waarvan u nu gebruik kunt maken is de console voor debuggen. Zorg er voor dat de uitvoering nu wordt gestopt op een onderbrekingspunt, voordat u doorgaat.

Open de weergave van de Console (Window ‣ Show view). Het zal de console Debug Server weergeven die niet bijzonder interessant is. Maar er is een knop [Open Console] die u brengt naar een meer interessante PyDev Debug Console. Klik op de pijl naast de knop [Open Console] en kies PyDev Console. Een venster opent om u te vragen welke console u wilt starten. Kies PyDev Debug Console. In het geval dat die is uitgegrijsd en u zegt om de debugger te starten en het geldige frame te selecteren, zorg er dan voor dat u de debugger op afstand heeft aangekoppeld en momenteel op een onderbrekingspunt staat.

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

PyDev console voor debuggen

U heeft nu een interactieve console die u opdrachten laat testen vanuit de huidige context. U kunt variabelen manipuleren of aanroepen naar de API maken of wat u ook wilt.

Enigszins vervelend is dat, elke keer als u een opdracht invoert, de console terugschakelt naar de Debug Server. U kunt op de knop Pin Console klikken als u op de pagina van de Debug Server bent en het zou deze beslissing, ten minste voor de huidige sessie van debuggen, moeten onthouden om dit gedrag te stoppen,

Eclipse de API laten begrijpen

Een zeer handige mogelijkheid is om Eclipse kennis te laten nemen van de API van QGIS. Dit stelt u in staat om het uw code te laten controleren op typefouten. Maar niet alleen dat, het stelt Eclipse ook in staat om u te helpen met automatisch aanvullen vanuit het importeren naar aanroepen van de API.

Eclipse parst de bibliotheekbestanden van QGIS en krijgt daar vandaan alle informatie om dit te doen. Het enige dat u moet doen is Eclipse vertellen waar het de bibliotheken kan vinden.

Klik op Window ‣ Preferences ‣ PyDev ‣ Interpreter ‣ Python.

U zult uw geconfigureerde interpreter voor Python zien in het bovenste gedeelte van het venster (op dit moment Python2.7 voor QGIS) en enkele tabs in het onderste gedeelte. De voor ons interessante tabs zijn Libraries en Forced Builtins.

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

PyDev console voor debuggen

Open erst de tab Libraries. Voeg een nieuwe map toe en kies de map voor Python van uw installatie voor QGIS. Als u niet weet waar die map staat (hij staat niet in de map plug-ins) open QGIS, start een console voor Python en voer eenvoudigweg qgis in en druk op Enter. Het zal u tonen welke module QGIS gebruikt en het pad er van. Verwijder het achterliggende /qgis/__init__.pyc uit dit pad en u heeft het pad waar u naar zoekt.

U zou hier ook uw map voor plug-ins moeten toevoegen (op Linux is dat ~/.qgis/python/plugins).

Spring vervolgens naar de tab Forced Builtins, klik op New... en vier in qgis. Dit zal Eclipse de API van QGIS laten parsen. U wilt waarschijnlijk ook dat Eclipse weet heeft van de API voor PyQt4. Voeg daarom ook PyQt4 toe als forced builtin. Die zou waarschijnlijk al aanwezig zijn op uw tab Libraries.

Klik op OK en u bent klaar.

Opmerking: elke keer dat de API van QGIS API wijzigt (bijv. als u de master van QGIS compileert en het bestand SIP wijzigt), zou u terug moeten gaan naar deze pagina en eenvoudigweg op Apply moeten klikken. Dat laat Eclipse alle bibliotheken opnieuw parsen.

Voor een andere mogelijke instelling van Eclipse om te werken met plug-ins voor Python in QGIS, bekijk deze link

Debuggen met behulp van PDB

Als u geen IDE gebruikt, zoals Eclipse, kunt u debuggen met behulp van PDB, volg deze stappen.

Voeg eerst de code toe op de plaats waar u wilt debuggen

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

Voer dan QGIS uit vanaf de opdrachtregel.

Doe op Linux:

$ ./Qgis

Doe op Mac OS X:

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

En wanneer de toepassing uw onderbrekingspunt tegenkomt kunt u in de console typen!

TODO:

Informatie voor testen toevoegen