16.3. 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.
16.3.1. Nuttige plug-ins voor het schrijven van plug-ins in Python
Sommige plug-ins zijn handig bij het schrijven van plug-ins in Python. Installeer vanuit
:Plugin reloader: Dit laat u een plug-in opnieuw laden en nieuwe wijzigingen op te halen, zonder QGIS opnieuw te starten.
First Aid: Dit zal een Python-console en lokale debugger toevoegen om variabelen te inspecteren als een uitzondering wordt opgeworpen vanuit een plug-in.
Waarschuwing
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.3.2. Een opmerking bij het configureren van uw IDE op Linux en Windows
Op Linux, alles wat gewoonlijk moet worden gedaan is de locaties van de bibliotheken van QGIS toe te voegen aan de omgevingsvariabele PYTHONPATH
van de gebruiker. In de meeste distributies kan dit worden gedaan door ~/.bashrc
of ~/.bash-profile
te bewerken met de volgende regel (getest op OpenSUSE Tumbleweed):
export PYTHONPATH="$PYTHONPATH:/usr/share/qgis/python/plugins:/usr/share/qgis/python"
Sla het bestand op en implementeer de instelling voor de omgeving door de volgende opdracht voor de shell te gebruiken:
source ~/.bashrc
Op Windows dient u er voor te zorgen dat u dezelfde instellingen voor de omgeving hebt en dezelfde bibliotheken en interpreter gebruikt als QGIS. De snelste manier om dit te doen is om het batchbestand voor het opstarten 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
.
16.3.3. Debuggen met behulp van Pyscripter IDE (Windows)
Voor het gebruiken van Pyscripter IDE is dit wat u moet doen:
Maak een kopie van
qgis-unstable.bat
en hernoem die naarpyscripter.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
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.
Populairder dan Pyscripter is Eclipse een veelgebruikte keuze voor ontwikkelaars. In het volgende gedeelte zullen we uitleggen hoe het te configureren voor het ontwikkelen en testen van plug-ins.
16.3.4. Debuggen met behulp van Eclipse en PyDev
16.3.4.1. Installatie
Zorg er voor, om Eclipse te kunnen gebruiken, dat u het volgende heeft geïnstalleerd
QGIS 2.x
U zou misschien ook Remote Debug willen installeren, een plug-in voor QGIS. Op dit moment is die nog steeds experimenteel, dus schakel eerst Ook de experimentele plug-ins tonen onder in.
U zou ook een batchbestand moeten maken en het gebruiken om Eclipse te starten, om uw omgeving voor te bereiden voor het gebruiken van Eclipse in Windows:
Zoek naar de map waar het bestand
qgis_core.dll
is geplaatst. Normaal gesproken is ditC:\OSGeo4W\apps\qgis\bin
, maar als u uw eigen toepassing in QGIS compileerde staat het in de map waar u het bouwde inoutput/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 start /B C:\path\to\your\eclipse.exe
16.3.4.2. 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.
Klik met rechts op uw nieuwe project en kies
.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.
16.3.4.3. Configureren van de debugger
De debugger werkend maken:
Schakel naar het Perspective Debug in Eclipse (
).start de PyDev debug server door te kiezen
.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 klik 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).
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 Console view (Debug Server weergeven, wat niet erg interessant is. Maar er is een knop Open Console die u laat schakelen naar een meer interessante PyDev Debug Console.
). Het zal de console vanKlik 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 het uitgegrijsd is en het u vertelt de debugger te starten en het geldige frame te selecteren, zorg er voor dat u de debugger op afstand hebt en momenteel op een onderbrekingspunt staat.
U hebt nu een interactieve console die u alle opdrachten laat testen vanuit de de huidige context. U kunt variabelen bewerken of aanroepen naar de API maken of wat u maar wilt.
Tip
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,
16.3.4.4. 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
.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.
Open eerst de tab Libraries.
Voeg een New Folder toe en kies de map voor Python van uw installatie van QGIS. Als u niet weet waar deze map staat (het is niet de map plugins):
Open QGIS
Start een console voor Python
Voer in
qgis
en druk op Enter. Het zal u laten zien welke module van QGIS het gebruikt en het pad ervan.
Verwijder het achterliggende gedeelte
/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 (het staat in
python/plugins
in de map gebruikersprofiel).Spring vervolgens naar de tab Forced Builtins, klik op New… en voer in
qgis
. Dit zal Eclipse de API van QGIS laten parsen. U wilt waarschijnlijk ook dat Eclipse weet heeft van de API voor PyQt. Voeg daarom ook PyQt toe als forced builtin. Die zou waarschijnlijk al aanwezig zijn op uw tab Libraries.Klik op OK en u bent klaar.
Notitie
Elke keer dat de API van QGIS 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.
16.3.5. Debuggen met PyCharm op Ubuntu met een gecompileerde QGIS
PyCharm is een IDE voor Python, ontwikkeld door JetBrains. Er is een gratis versie, genaamd Community Edition, en een waarvoor betaald moet worden, genaamd Professional. U kunt PyCharm downloaden vanaf de website: https://www.jetbrains.com/pycharm/download
We nemen aan dat u QGIS hebt gecompileerd op Ubuntu met de opgegeven map voor het bouwen ~/dev/qgis/build/master
. Het is niet verplicht een eigen gecompileerde QGIS te hebben, maar alleen dit is getest. Paden moeten worden aangepast.
In PyCharm, in uw Project Properties, Project Interpreter, gaan we een Python Virtual environment maken, genaamd
QGIS
.Klik op het kleine tandwiel en dan op Add.
Selecteer Virtualenv environment.
Selecteer een algemene locatie voor al uw projecten van Python, zoals
~/dev/qgis/venv
, omdat we deze interpreter voor Python zullen gebruiken voor al onze plug-ins.Kies een op uw systeem beschikbare interpreter op basis van Python 3 en selecteer de volgende twee opties Inherit global site-packages en Make available to all projects.
Klik op OK, ga terug naar het kleine tandwiel en klik op Show all.
Selecteer, in het nieuwe venster, uw nieuwe interpreter
QGIS
en klik op het laatste pictogram in het verticale menu Show paths for the selected interpreter.Voeg tenslotte het volgende absolute pad toe aan de lijst
~/dev/qgis/build/master/output/python
.
Start PyCharm opnieuw op en u kunt beginnen met het gebruiken van deze nieuwe virtuele omgeving van Python voor al uw plug-ins.
PyCharm zal zich bewust zijn van de API van QGIS en ook van de API van PyQt, als u Qt gebruikt zoals het wordt verschaft door QGIS,zoals from qgis.PyQt.QtCore import QDir
. Het automatisch aanvullen zou moeten werken en PyCharm kan uw code inspecteren.
In de professionele versie van PyCharm, werkt debuggen op afstand heel goed. Voor de Community edition is debuggen op afstand niet beschikbaar. U hebt alleen toegang tot een lokale debugger, wat betekent dat de code moet worden uitgevoerd binnen PyCharm (als script of eenheidstest), niet in QGIS zelf. Voor Pythoncode die wordt uitgevoerd in QGIS, zou u de plug-in First Aid, zoals hierboven vermeld, kunnen gebruiken.
16.3.6. Debuggen met behulp van PDB
Wanneer u geen IDE gebruikt, zoals Eclipse of PyCharm, kunt u debuggen met PDB, door deze stappen te volgen.
Voeg eerst de code toe op de plaats waar u wilt debuggen
# 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()
Voer dan QGIS uit vanaf de opdrachtregel.
Doe op Linux:
$ ./Qgis
Doe op macOS:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
En wanneer de toepassing uw onderbrekingspunt tegenkomt kunt u in de console typen!
- TODO:
Informatie voor testen toevoegen