Deși fiecare programator preferă un anumit editor IDE/Text, iată câteva recomandări de setare a unor IDE-uri populare, pentru scrierea și depanarea plugin-urilor Python specifice QGIS.
În Linux nu este necesară nici o configurare suplimentară pentru dezvoltarea plugin-urilor. În Windows însă, trebuie să vă asigurați că aveți aceleași setări de mediu și folosiți aceleași bibliotecile și interpretor ca și QGIS. Cel mai rapid mod de a face acest lucru, este de a modifica fișierul batch de pornire a QGIS.
Dacă ați folosit programul de instalare OSGeo4W, îl puteți găsi în folderul bin al propriei instalări OSGeo4W. Căutați ceva de genul C:\OSGeo4W\bin\qgis-unstable.bat.
Pentru utilizarea IDE-ului Pyscripter, iată ce aveți de făcut:
Faceți o copie a fișierului qgis-unstable.bat și redenumiți-o pyscripter.bat.
Deschideți-o într-un editor. Apoi eliminați ultima linie, cea care startează QGIS.
Adăugați o linie care să indice calea către executabilul Pyscripter, apoi adăugați argumentul care stabilește versiunea de Python ce urmează a fi utilizată (2.7 în cazul QGIS >= 2.0)
De asemenea, adăugați și un argument care să indice folderul unde poate găsi Pyscripter dll-ul Python folosit de către QGIS, acesta aflându-se în folderul bin al instalării 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
Acum, când veți efectua dublu clic pe acest fișier batch, el va starta Pyscripter, având calea corectă.
Mult mai popular decât Pyscripter, Eclipse este o alegere comună în rândul dezvoltatorilor. În următoarele secțiuni, vă vom explica cum să-l configurați pentru dezvoltarea și testarea plugin-urilor. Pentru utilizarea în Windows, ar trebui să creați, de asemenea, un fișier batch pe care să-l utilizați la pornirea Eclipse.
Pentru a crea fișierul batch, urmați acești pași:
Localizați folderul în care rezidă qgis_core.dll. În mod normal, el se găsește în C:OSGeo4Wappsqgisbin, dar dacă ați compilat propria aplicație QGIS, atunci el va fi în folderul output/bin/RelWithDebInfo
Localizați executabilul eclipse.exe.
Creați următorul script și folosiți-l pentru a starta Eclipse, atunci când dezvoltați plugin-uri 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
Chiar și în QGIS, este necesară efectuarea anumitor acțiuni pregătitoare. Două plugin-uri sunt de interes: Remote Debug și Plugin Reloader.
Mergeți la Plugin-uri ‣ Gestiune și Instalare plugin-uri...
Căutați Remote Debug (la această dată este încă experimental, deci, în cazul în care nu-l observați, va trebui să activați plugin-urile experimentale, din fila Opțiunilor). Instalați-l.
De asemenea, căutați Plugin Reloader și instalați-l. Acest lucru vă va permite să reîncărcați un plug-in, fără a fi necesare închiderea și repornirea QGIS.
În Eclipse, creați un nou proiect. Puteți să selectați General Project și să legați ulterior sursele dvs. reale, așa că nu prea contează unde plasați acest proiect.
Acum, faceți clic dreapta pe noul proiect și alegeți New ‣ Folder.
Faceți clic pe [Avansat] și alegeți Legătură către o locație alternativă (Folder Legat). În cazul în care deja aveți sursele pe care doriți să le depanați, le puteți alege pe acestea. În caz contrar, creați un folder, așa cum s-a explicat anterior.
Acum, în fereastra Project Explorer, va apărea arborele sursă și veți putea începe să lucrați la cod. Aveți disponibile deja evidențierea sintaxei și toate celelalte instrumente puternice din IDE.
Pentru a vedea depanatorul la lucru, comutați în perspectiva Depanare din Eclipse (Window ‣ Open Perspective ‣ Other ‣ Debug).
Acum, porniți serverul de depanare PyDev, alegând PyDev ‣ Start Debug Server.
În acest moment, Eclipse așteaptă o conexiune de la QGIS către serverul de depanare, iar când QGIS se va conecta la serverul de depanare va fi permis controlul scripturilor Python. Exact pentru acest lucru am instalat plugin-ul Remote Debug. Deci, startați QGIS, în cazul în care nu ați făcut-o deja și efectuați clic pe simbolul insectei.
Acum puteți seta un punct de întrerupere, și de îndată ce codul îl va atinge, execuția se va opri, după care veți putea inspecta starea actuală a plugin-ului. (Punctul de întrerupere este reprezentat de punctul verde din imaginea de mai jos, și se poate introduce printr-un dublu clic în spațiul alb din stânga liniei în care doriți un punct de întrerupere).
Un aspect foarte interesant este faptul că puteți utiliza consola de depanare. Asigurați-vă că execuția este, în mod curent, stopată, înainte de a continua.
Deschideți fereastra consolei (Window ‣ Show view). Se va afișa consola Debug Server, ceea ce nu este prea interesant. În schimb, butonul [Open Console] permite trecerea la mult mai interesanta consolă de depanare PyDev. Faceți clic pe săgeata de lângă butonul [Open Console] și alegeți PyDev Console. Se deschide o fereastră care vă va întreba ce consolă doriți să deschideți. Alegeți PyDev Debug Console. În cazul când aceasta este gri, vă cere să porniți depanatorul și să selectați un cadru valid, asigurați-vă că ați atașat depanatorul la distanță, iar în prezent sunteți pe un punct de întrerupere.
Acum aveți o consolă interactivă care vă permite să testați orice comenzi din interior, în contextul actual. Puteți manipula variabile, să efectuați apeluri API sau orice altceva.
Un pic enervant este faptul că, de fiecare dată când introduceți o comandă, consola comută înapoi la serverul de depanare. Pentru a opri acest comportament, aveți posibilitatea să faceți clic pe butonul Pin Console din pagina serverului de depanare, pentru reținerea acestei decizii, cel puțin pentru sesiunea de depanare curentă.
O caracteristică facilă este de a pregăti Eclipse pentru API-ul QGIS. Aceasta va permite verificarea eventualelor greșeli de ortografie din cadrul codului. Dar nu doar atât, va permite ca Eclipse să autocompleteze din importurile către apelurile API.
Pentru a face acest lucru, Eclipse analizează fișierele bibliotecii QGIS și primește toate informațiile de acolo. Singurul lucru pe care trebuie să-l faceți este de a-i indica lui Eclipse unde să găsească bibliotecile.
Faceți clic pe Window ‣ Preferences ‣ PyDev ‣ Interpreter ‣ Python.
Veți vedea interpretorul de python (pe moment versiunea 2.7) configurat, în partea de sus a ferestrei și unele file în partea de jos. Filele interesante pentru noi sunt Libraries și Forced Builtins.
În primul rând deschideți fila Libraries. Adăugați un folder nou și selectați folderul python al aplicației QGIS instalate. Dacă nu știți unde se află acest director (acesta nu este folderul plugin-urilor) deschideți QGIS, startați o consolă python și pur și simplu introduceți qgis, apoi apăsați Enter. Acest lucru vă va arăta care modul QGIS este folosit, precum și calea sa. Ștergeți /qgis/__init__.pyc și veți obține calea pe care o căutați.
Ar trebui să adăugați, de asemenea, propriul director de plugin-uri aici (în Linux este ~/.qgis2/python/plugins).
Apoi deschideți tab-ul Includeri Forțate, faceți clic pe Nou... și introduceți qgis. Acest lucru va face ca Eclipse să analizeze API-ul QGIS. Probabil doriți, de asemenea, ca Eclipse să știe și despre API-ul PyQt4. Prin urmare, adăugați și PyQt4 ca includere forțată. Probabil că ar trebui să se afle deja în fila bibliotecilor.
Faceți clic pe OK și ați terminat.
Note
Notă: la orice modificare a API-ului QGIS (de exemplu, în urma compilării QGIS master și a modificării fișierului SIP), ar trebui să mergeți înapoi la această pagină și pur și simplu să faceți clic pe Aplicare. Acest lucru va face ca Eclipse să analizeze toate bibliotecile din nou.
Pentru o altă setare posibilă de Eclipse, pentru a lucra cu plugin-urile Python QGIS, verificați acest link
Dacă nu folosiți un IDE, cum ar fi Eclipse, puteți depana folosind PDB, urmând acești pași.
Mai întâi, adăugați acest cod în locul în care doriți depanarea
# Use pdb for debugging
import pdb
# These lines allow you to set a breakpoint in the app
pyqtRemoveInputHook()
pdb.set_trace()
Apoi executați QGIS din linia de comandă.
În Linux rulați:
$ ./Qgis
În Mac OS X rulați:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
Iar când aplicația atinge punctul de întrerupere aveți posibilitatea de a tasta în consolă!
Adăugați informații pentru testare