Setările IDE pentru scrierea și depanarea de plugin-uri

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.

O notă privind configurarea IDE-ului în Windows

În Linux nu este necesară nici o configurare suplimentară pentru dezvoltarea plug-in-urilor. Dar în Windows 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 de a QGIS.

Dacă ați folosit programul de instalare OSGeo4W, îl puteți găsi în folderul bin al propriei instalări OSGeoW. 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 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 și adăugați ș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ă.

Mai popular decât Pyscripter, Eclipse este o alegere comună în rândul dezvoltatorilor. În următoarele secțiuni, vom explica cum să-l configurați pentru dezvoltarea și testarea plugin-urilor. Când îl pregătiți 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ă file: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

Depanare cu ajutorul Eclipse și PyDev

Instalare

Pentru a utiliza Eclipse, asigurați-vă că ați instalat următoarele

  • Eclipse
  • Aptana Eclipse Plugin sau PyDev

  • QGIS 2.0

Pregătirea QGIS

E necesară efectuarea anumitor acțiuni pregătitoare pentru însuși QGIS. Două plugin-uri sunt de interes: Remote Debug și Plugin Reloader.

  • Mergeți la Plugins ‣ Fetch python plugins

  • 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 în fila Opțiuni). 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.

Configurarea Eclipse

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

../../_images/eclipsenewproject.png

Proiectul Eclipse

Acum, faceți clic dreapta pe noul proiect și alegeți New ‣ Folder.

Faceți clic pe [Advanced] și alegeți Link to alternate location (Linked Folder). În cazul în care deja aveți sursele pe care doriți să le depanați, le puteți alege, în caz contror, 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.

Configurarea depanatorului

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 plug-in-ului. (Punctul de întrerupere este punctul verde din imaginea de mai jos, și se poate seta printr-un dublu clic în spațiul alb din stânga liniei în care doriți un punct de întrerupere)

../../_images/breakpoint.png

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.

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

Consola de depanare PyDev

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

Configurați Eclipse pentru a înțelege API-ul

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.

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

Consola de depanare PyDev

Î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 ~/.qgis/python/plugins).

Apoi deschideți tab-ul Forced Builtins, faceți clic pe New... și introduceți qgis. Acest lucru îl va face pe 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 builtin forțat. Probabil că ar trebui să fie deja prezent în fila bibliotecilor.

Faceți clic pe OK și ați terminat.

Notă: la orice modificare a API-ului QGIS (de exemplu, dacă compilați QGIS master și s-a schimbat fișierul SIP), ar trebui să mergeți înapoi la această pagină și pur și simplu faceți clic pe Apply. Acest lucru va permite 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

Depanarea cu ajutorul PDB

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

DE EFECTUAT:

Adăugați informații pentru testare