QGIS3+Eclipse+PyDevでデバッグ

環境

OS Windows10 64bit
QGIS QGIS3.4.4(OSGEO4W 32bit)
Eclipse 2018-12 64bit
Java Oracle JRE 10
PyDev 7.1.0.201902031515

QGISをインストール

OSGEO4W版のインストーラーを起動しC:\OSGEO4Wにインストール

QGISを起動

Eclipse

以下よりEclipseをダウンロード

https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2018-12/R/eclipse-inst-win64.exe

ダウンロードしたeclipse-inst-win64を実行

起動すると以下のメッセージ表示

Eclipseのサイトより「Oracle JRE 10」をダウンロード

https://download.eclipse.org/oomph/jre/index-handler.php?vm=1_1_7_0_64_0&pn=Eclipse%20Installer&pu=http://wiki.eclipse.org/Eclipse_Installer&pi=http://download.eclipse.org/oomph/jre/128×128.png

ダウンロードした「jre-10.0.2_windows-x64_bin」を実行

インストールボタンをクリック

再度「eclipse-inst-win64」を実行

eclipse インストーラーが起動されたら「eclipse IDE for java developers」を選択

証明書の確認

PyDev

Eclipseを起動してHelpメニューの「Install New Software」

「Work With」の「Add」ボタンをクリック

NameにPyDev、Locationに「http://pydev.org/updates」を指定しAddボタンをクリック

PyDevをチェックしてNEXTボタンをクリック

Detaileボタンを押してPydevのインストール先を確認してから「Install Anyway」を実行

PyDevの設定

Eclipseを起動して「Window」→「Preferences」を選択

左のTreeでPyDev-Interpreters-Python Interpreterを選択

QGISが使用するPython.exeを指定するためにQGISを起動してPYTHONHOMEの値を確認

「Browse for pythonpypy exe」ボタンを押してNAMEには任意の名称(ここではpython37)、値には先ほど調べたPython.exeのフルパスを指定。

Librariesは自動でいくつかの参照先が指定されるが手動で不足分を指定

先ほどインストール先を確認したPyDevも指定

Packagesには警告らしき表示があるが無視

Forced Builtinsのタブを表示して「New」ボタンを押してqgisとPyQt5をそれぞれ登録

Environmentoタブを表示して以下の環境変数を設定

「Apply」ボタンを押して「Apply and Close」ボタンを押して設定を反映

設定内容が即反映されないので「Apply」ボタンを押したら暫く待つこと。

※設定が終了する前に画面を閉じると正しく設定が終了しない

デバッグの準備

外部TOOLにQGISを設定

メニュ「Run」-「External Tools Configurations」を指定して外部TOOLとしてQGISを設定

プロジェクトを作成

Eclipseの「New」メニューから-「Project」-「PyDev Project」を選択

以下に従ってプロジェクトの内容を設定しFinishボタンを押す

確認のためにQGISのPlugin Builder3でプラグインを作成して「C:\Users\ユーザー名\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\」に配置

init.pyに以下を記述

import os,sys
sys.path.append("C:\\Users\\kernel\\.p2\\pool\\plugins\\org.python.pydev.core_7.1.0.201902031515\\pysrc")
import pydevd
pydevd.settrace()

sys.pathに追加しているのはPyDev

この記述はEclipseを使用しないときはエラーとなる

これを記述するとclassFactory関数でブレークする

デバッグ実行

ここからの操作は若干確信がないが、とりあえず正しく動作したので良しとして説明

プラグイン「Remote Debug」と「Plugin Reloader」を有効にするためにプラグインの設定で実験的プラグインも表示する

デバッグボタンを押す

「start pydev Server」ボタンをクリック

「外部TOOL QGISを起動」