QGIS3にプラグインを移植する方法

qgis2用に作ったプラグインをqgis3に対応させるためのメモです。

qgis2to3の準備

OSGeo4Wをインストール
QGISスタンドアローンインストーラーでインストールされるものだとpy3_envでパスがうまく指定されないのでpipがC:\OSGeo4Wのpythonを読み込もうとするので、OSGeo4Wネットワークインストーラーを使います。)

OSGeo4W shell を管理者で実行

py3_env
pip install qgis2to3

qgis2to3の実行

OSGeo4W shellを普通に実行

py3_env
cd C:\Users\mizutani\.qgis2\python\plugins
mkdir myplugin_qgis3
python "c:\OSGeo4W64\apps\Python37\Scripts\qgis2to3" -w -n -o myplugin_qgis3 myplugin

importの修正

importを以下に変更

from qgis.PyQt.QtCore import *
from qgis.PyQt.QtWidgets import *
from qgis.PyQt.QtGui import *
from qgis.core import *
from qgis.gui import *

metadata.txtの修正

metadata.txtのプラグインの対応バージョンを3.0に変更

qgisMinimumVersion=3.0

qgis3のプラグイン置き場に移動

mv myplugin_qgis3 %USERPROFILE%\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\myplugin

リソースのコンパイル

cd %USERPROFILE%\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\myplugin
qt5_env
pyrcc5 -o resources.py resources.qrc

QGIS3の起動とエラーの修正

qgis3を起動してプラグインでエラーになる箇所を修正

変更箇所
QGIS API Documentation: Backwards Incompatible Changes