Хоча кожен програміст має улюблену IDE або текстовий редактор, ось деякі рекомендації з настройки популярних IDE для розробки плаґінів QGIS на Python.
On Linux there is no additional configuration needed to develop plugins. 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 OSGeo4W install. Look for something like C:\OSGeo4W\bin\qgis-unstable.bat.
Далі описується настройка PyScripter IDE:
Make a copy of qgis-unstable.bat and rename it pyscripter.bat.
відкрийте цей файл у текстовому редакторі та видаліть останній рядок, який відповідає за запуск QGIS
Add a line that points to 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)
додайте ще один параметр, що вказує на каталог, де PyScripter повинен шукати бібліотеки Python QGIS. Зазвичай це каталог bin директорії, де встановлено OSGeo4W
@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
Тепер після запуску цього командного файлу буде встановлено необхідні змінні оточення та запущено PyScripter.
More popular than 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:
знайдіть каталог, де знаходиться eclipse.exe
створіть командний файл з наступним вмістом та використовуйте його для запуску Eclipse
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
Для роботи з Eclipse переконайтеся, що встановили наступні програми:
There is some preparation to be done on QGIS itself. Two plugins are of interest: Remote Debug and Plugin reloader.
знайдіть плаґін Plugin Reloader і також встановіть його. Це дозволить вам перезавантажувати модуль, а не закривати та знову запускати QGIS.
Створіть новий проект у Eclipse. Ви можете вибрати General Project і додати реальні файли пізніше, тобто зараз немає значення де саме буде розміщено проект.
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.
Після цього у Project Explorer з’явиться дерево вихідних кодів і ви можете починати працювати з кодом. У вашому розпорядженні підсвітка синтаксису та інші інструменти IDE.
Щоб зневаджувач запрацював відкрийте Debug perspective в Eclipse (Window ‣ Open Perspective ‣ Other ‣ Debug).
Потім запустить зневаджувальний сервер PyDev, вибравши 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).
Дуже корисним інструментом, який зараз можна використовувати, є зневаджувальна консоль. Перш ніж використовувати її переконайтесь, що виконання зараз зупинилось у точці зупинки.
Відкрийте консоль (Window ‣ Show view). Ви побачите консоль зневаджувального сервера, де нічого цікавого немає. Але після натискання на кнопку [Open Console] вона перетворюється на значно цікавішу консоль зневадження PyDev. Натисніть на стрілку поруч з кнопкою [Open Console] та виберіть PyDev Console. З’явиться вікно з питанням, яку консоль ви хочете активувати. Виберіть PyDev Debug Console. Якщо цей пункт недоступний та вас просять запустити зневаджувач та вказати правильний фрейм, переконайтесь, що ви знаходитесь у режимі зневадження та виконання зупинилось у казаній точці зупинки.
Тепер у вас є інтерактивна консоль, у якій можна виконувати будь-які команди у поточному контексті. Ви можете маніпулювати змінними, викликати різні методи API і таке інше.
Трохи дратує те, що після кожної виконаної команди консоль переключається до зневаджувального сервера. Щоб змінити цю поведінку натисніть кнопку Pin Console коли знаходитись на сторінці зневаджувального сервера. Ваш вибір повинен зберегтися принаймні для поточної сесії зневадження.
Дуже зручно, коли Eclipse знає API QGIS. Це значно зменшує кількість друкарських помилок, а крім того, дозволяє використовувати автозавершення коду викликів API.
Для цього Eclipse необхідно проаналізувати файли бібліотек QGIS та витягти з них необхідну інформацію. Вам треба тільки вказати Eclipse де саме шукати ці бібліотеки.
Виберіть Window ‣ Preferences ‣ PyDev ‣ Interpreter ‣ Python.
У верхній частині вікна знаходяться налаштовані інтерпретатори Python (у нашому випадку тільки Python 2.7 для QGIS), а в нижній частині — декілька вкладок. Нас цікавлять вкладки Libraries та Forced Builtins.
Спочатку перейдіть на вкладку Libraries. Натисніть [New Folder] та вкажіть каталог Python вашої встановленої QGIS. Якщо ви не знаєте де цей каталог знаходиться (це не каталог плаґінів!), відкрийте QGIS, активуйте консоль Python та виконайте команду qgis. Результатом цієї команди буде список плаґінів та їх каталоги. Відкиньте /qgis/__init__.pyc з цього шляху та отримаєте шуканий каталог.
You should also add your plugins folder here (on Linux it is ~/.qgis2/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.
Натисніть [OK] щоб закінчити.
Примітка
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.
Інший варіант настройки Eclipse для роботи з плаґінами QGIS описано тут.
Якщо ви не користуєтесь такими IDE як Eclipse, ви можете зневаджувати за допомогою PDB. Для цього:
додайте наступний код, у місце, яке необхідно зневадити
# Use pdb for debugging
import pdb
# These lines allow you to set a breakpoint in the app
pyqtRemoveInputHook()
pdb.set_trace()
тепер запустить QGIS з командного рядка
On Linux do:
$ ./Qgis
On Mac OS X do:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
Як тільки програма дійде до вашої точки зупинки, консоль стане доступною і ви зможете виконувати будь-які команди!