Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
16.3. IDE-inställningar för skrivning och debuggning av plugins
Även om varje programmerare har sin föredragna IDE/Textredigerare, följer här några rekommendationer för att konfigurera populära IDE:er för att skriva och felsöka QGIS Python-plugins.
16.3.1. Användbara plugins för att skriva Python-plugins
Vissa plugins är praktiska när man skriver Python-plugins. Från
, installera:Återladdare för insticksprogram: Detta gör att du kan ladda om ett plugin och dra nya ändringar utan att starta om QGIS.
Första hjälpen: Detta lägger till en Python-konsol och en lokal felsökare för att inspektera variabler när ett undantag uppstår från ett plugin.
Varning
Trots våra ständiga ansträngningar kan det hända att information bortom denna linje inte uppdateras för QGIS 3.
16.3.2. En anteckning om hur du konfigurerar din IDE under Linux och Windows
På Linux är allt som vanligtvis behöver göras att lägga till QGIS-biblioteksplatserna i användarens miljövariabel PYTHONPATH
. Under de flesta distributioner kan detta göras genom att redigera ~/.bashrc
eller ~/.bash-profile
med följande rad (testad på OpenSUSE Tumbleweed):
export PYTHONPATH="$PYTHONPATH:/usr/share/qgis/python/plugins:/usr/share/qgis/python"
Spara filen och implementera miljöinställningarna med hjälp av följande shell-kommando:
source ~/.bashrc
På Windows måste du se till att du har samma miljöinställningar och använder samma bibliotek och tolk som QGIS. Det snabbaste sättet att göra detta är att ändra startbatchfilen för QGIS.
Om du använde OSGeo4W Installer kan du hitta den här under mappen bin
i din OSGeo4W-installation. Leta efter något som C:\OSGeo4W\bin\qgis-unstable.bat
.
16.3.3. Felsökning med hjälp av Pyscripter IDE (Windows)
För att använda Pyscripter IDE, här är vad du måste göra:
Gör en kopia av
qgis-unstable.bat
och döp om den tillpyscripter.bat
.Öppna den i en editor. Och ta bort den sista raden, den som startar QGIS.
Lägg till en rad som pekar på den körbara filen för Pyscripter och lägg till kommandoradsargumentet som anger vilken version av Python som ska användas
Lägg också till argumentet som pekar på mappen där Pyscripter kan hitta Python dll som används av QGIS, du kan hitta den under bin-mappen i din OSGeoW-installation
@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
När du nu dubbelklickar på denna batchfil kommer den att starta Pyscripter med rätt sökväg.
Eclipse är mer populärt än Pyscripter och är ett vanligt val bland utvecklare. I följande avsnitt förklarar vi hur du konfigurerar det för att utveckla och testa plugins.
16.3.4. Felsökning med hjälp av Eclipse och PyDev
16.3.4.1. Installation
För att använda Eclipse måste du se till att du har installerat följande
Aptana Studio 3 Plugin eller PyDev
QGIS 3.x
Du kanske också vill installera Remote Debug, en QGIS plugin. För tillfället är det fortfarande experimentellt så aktivera
Experimental plugins under i förväg.
För att förbereda din miljö för att använda Eclipse i Windows bör du också skapa en batchfil och använda den för att starta Eclipse:
Leta reda på mappen där
qgis_core.dll
finns. Normalt är dettaC:\OSGeo4W\apps\qgis\bin
, men om du har kompilerat ditt eget QGIS-program finns detta i din byggmapp ioutput/bin/RelWithDebInfo
Leta reda på din körbara fil
eclipse.exe
.Skapa följande skript och använd det för att starta eclipse när du utvecklar QGIS-plugins.
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. Konfigurera Eclipse
I Eclipse skapar du ett nytt projekt. Du kan välja General Project och länka dina riktiga källor senare, så det spelar egentligen ingen roll var du placerar det här projektet.
Fig. 16.18 Eclipse-projekt
Högerklicka på det nya projektet och välj :menyselection:`New --> Folder`.
Klicka på Avancerat och välj Länk till alternativ plats (Länkad mapp). Om du redan har källor som du vill felsöka väljer du dessa. Om du inte har det, skapa en mapp som det redan har förklarats.
I vyn Project Explorer dyker nu källträdet upp och du kan börja arbeta med koden. Du har redan syntaxmarkering och alla de andra kraftfulla IDE-verktygen tillgängliga.
16.3.4.3. Konfigurera felsökaren
För att få felsökaren att fungera:
Byt till Debug-perspektivet i Eclipse (:menyval:`Window --> Open Perspective --> Other --> Debug`).
starta PyDev debug server genom att välja
.Eclipse väntar nu på en anslutning från QGIS till sin debugserver och när QGIS ansluter till debugservern kommer den att tillåta den att styra pythonskripten. Det är precis vad vi installerade Remote Debug plugin för. Så starta QGIS om du inte redan gjort det och klicka på buggsymbolen.
Nu kan du ställa in en brytpunkt och så snart koden träffar den kommer exekveringen att stoppas och du kan inspektera det aktuella tillståndet för ditt plugin. (Brytpunkten är den gröna pricken i bilden nedan, ställ in en genom att dubbelklicka i det vita utrymmet till vänster om den rad du vill att brytpunkten ska ställas in).

Fig. 16.19 Brytpunkt
En mycket intressant sak som du kan använda dig av nu är debug-konsolen. Se till att exekveringen för närvarande är stoppad vid en brytpunkt innan du fortsätter.
Öppna konsolvyn (Debug Server som inte är särskilt intressant. Men det finns en knapp Open Console som låter dig byta till en mer intressant PyDev Debug Console.
). Den visar konsolenKlicka på pilen bredvid knappen Open Console och välj PyDev Console. Ett fönster öppnas där du får frågan om vilken konsol du vill starta.
Välj PyDev Debug Console. Om den är gråtonad och säger åt dig att starta felsökaren och välja den giltiga ramen, se till att du har fjärrfelsökaren ansluten och för närvarande befinner dig på en brytpunkt.
Fig. 16.20 PyDev felsökningskonsol
Du har nu en interaktiv konsol som låter dig testa alla kommandon från det aktuella sammanhanget. Du kan manipulera variabler eller göra API-anrop eller vad du vill.
Tips
Lite irriterande är att varje gång du anger ett kommando växlar konsolen tillbaka till Debug Server. För att stoppa detta beteende kan du klicka på knappen Pin Console när du är på Debug Server-sidan och den bör komma ihåg detta beslut åtminstone för den aktuella debug-sessionen.
16.3.4.4. Få eclipse att förstå API:et
En mycket praktisk funktion är att Eclipse faktiskt känner till QGIS API. Detta gör att den kan kontrollera din kod för stavfel. Men inte bara detta, det gör det också möjligt för Eclipse att hjälpa dig med autokomplettering från importen till API-anrop.
För att göra detta analyserar Eclipse QGIS-biblioteksfilerna och hämtar all information som finns där. Det enda du behöver göra är att tala om för Eclipse var biblioteken finns.
Klicka på
.Du kommer att se din konfigurerade python-tolk i den övre delen av fönstret (för närvarande python2.7 för QGIS) och några flikar i den nedre delen. De flikar som är intressanta för oss är Libraries och Forced Builtins.
Fig. 16.21 PyDev felsökningskonsol
Öppna först fliken Libraries.
Add a New Folder och välj python-mappen i din QGIS-installation. Om du inte vet var den här mappen finns (det är inte plugins-mappen):
Öppna QGIS
Starta en python-konsol
Ange
qgis
och tryck på Enter. Du kommer att se vilken QGIS-modul som används och dess sökväg.
Ta bort den efterföljande
/qgis/__init__.pyc
från den här sökvägen så har du den sökväg du letar efter.
Du bör också lägga till din plugins-mapp här (den finns i
python/plugins
under user profile-mappen).Gå sedan till fliken Forced Builtins, klicka på New… och skriv in
qgis
. Detta kommer att få Eclipse att analysera QGIS API. Du vill förmodligen också att Eclipse ska känna till PyQt API. Lägg därför också till PyQt som forced builtin. Det bör förmodligen redan finnas i din biblioteksflik.Klicka på OK och du är klar.
Observera
Varje gång QGIS API ändras (t.ex. om du kompilerar QGIS master och SIP-filen ändras), bör du gå tillbaka till den här sidan och klicka på Apply. Detta kommer att låta Eclipse analysera alla bibliotek igen.
16.3.5. Felsökning med PyCharm på Ubuntu med en kompilerad QGIS
PyCharm är en IDE för Python som utvecklats av JetBrains. Det finns en gratisversion som heter Community Edition och en betald version som heter Professional. Du kan ladda ner PyCharm på webbplatsen: https://www.jetbrains.com/pycharm/download
Vi antar att du har kompilerat QGIS på Ubuntu med den angivna byggkatalogen ~/dev/qgis/build/master
. Det är inte obligatoriskt att ha ett egenkompilerat QGIS, men endast detta har testats. Sökvägar måste anpassas.
I PyCharm, i din Project Properties, Project Interpreter, kommer vi att skapa en virtuell Python-miljö som heter
QGIS
.Klicka på den lilla kugghjulet och sedan på Add.
Välj Virtualenv-miljö.
Välj en generisk plats för alla dina Python-projekt, t.ex.
~/dev/qgis/venv
eftersom vi kommer att använda denna Python-tolk för alla våra insticksprogram.Välj en Python 3-basinterpretator som finns tillgänglig på ditt system och kontrollera de två följande alternativen Inherit global site-packages och Make available to all projects.

Klicka på OK, gå tillbaka till den lilla växeln och klicka på Visa alla.
I det nya fönstret väljer du din nya tolk
QGIS
och klickar på den sista ikonen i den vertikala menyn :guilabel:Visa sökvägar för den valda tolken.
Slutligen lägger du till följande absoluta sökväg i listan
~/dev/qgis/build/master/output/python
.

Starta om PyCharm så kan du börja använda denna nya virtuella Python-miljö för alla dina plugins.
PyCharm kommer att vara medveten om QGIS API och även om PyQt API om du använder Qt som tillhandahålls av QGIS som from qgis.PyQt.QtCore import QDir
. Autokompletteringen bör fungera och PyCharm kan inspektera din kod.
I den professionella versionen av PyCharm fungerar fjärrfelsökning bra. För Community-utgåvan är fjärrfelsökning inte tillgänglig. Du kan bara ha tillgång till en lokal felsökare, vilket innebär att koden måste köras inom PyCharm (som skript eller unittest), inte i själva QGIS. För Python-kod som körs i QGIS kan du använda insticksprogrammet First Aid som nämns ovan.
16.3.6. Felsökning med hjälp av PDB
Om du inte använder en IDE som Eclipse eller PyCharm kan du felsöka med hjälp av PDB genom att följa dessa steg.
Lägg först till den här koden på den plats där du vill göra felsökningen
# 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()
Kör sedan QGIS från kommandoraden.
På Linux gör du det:
$ ./Qgis
På macOS gör du det:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
Och när programmet når din brytpunkt kan du skriva i konsolen!
- TODO:
Lägg till testinformation