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

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.

Pentru utilizarea IDE-ului Pyscripter, iată ce aveți de făcut:

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

  • Deschideți-o într-un editor. Apoi eliminați ultima linie, cea care startează QGIS.

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

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

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
  • 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 or PyDev
  • QGIS 2.0

Pregătirea QGIS

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

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

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.

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

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.

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.

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

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.

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

On Linux do:

$ ./Qgis

On Mac OS X do:

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