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

On Linux there is no additional configuration needed to develop plug-ins. But on Windows you need to make sure you that you have the same environment settings and use the same libraries and interpreter as QGIS. The fastest way to do this, is to modify the startup batch file of QGIS.

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

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

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

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

  • Add a line that points to the your Pyscripter executable and add the commandline argument that sets the version of Python to be used (2.7 in the case of 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.

More popular that Pyscripter, Eclipse is a common choice among developers. In the following sections, we will be explaining how to configure it for developing and testing plugins. To prepare your environment for using Eclipse in Windows, you should also create a batch file and use it to start Eclipse.

To create that batch file, follow these steps.

  • Locate the folder where file:qgis_core.dll resides in. Normally this is C:OSGeo4Wappsqgisbin, but if you compiled your own QGIS application this is in your build folder 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 or PyDev
  • QGIS 2.0

QGIS voorbereiden

There is some preparation to be done on QGIS itself. Two plugins are of interest: Remote Debug and Plugin reloader.

  • Go to Plugins ‣ Fetch python 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.
  • 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

Now right click your new project and choose New ‣ Folder.

Click [Advanced] and choose Link to alternate location (Linked Folder). In case you already have sources you want to debug, choose these, in case you don’t, create a folder as it was already explained

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 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

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 eerst 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.

You should also add your plugins folder here (on Linux it is ~/.qgis/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.

Klik op OK en u bent klaar.

Note: 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.

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.

On Linux do:

$ ./Qgis

On Mac OS X do:

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

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

TODO:

Informatie voor testen toevoegen