プラグインを書いてデバッグするためのIDE設定

警告

Despite our constant efforts, information beyond this line may not be updated for QGIS 3. Refer to https://qgis.org/pyqgis/master for the python API documentation or, give a hand to update the chapters you know about. Thanks.

プログラマには皆それぞれ自分の好みのIDE /テキストエディタがありますが、ここに人気のIDEを設定し、QGISの Pythonプラグインを書いたりデバッグするためのいくつかの推奨事項があります。

A note on configuring your IDE on Windows

Linuxではプラグインを開発するために必要な追加の構成はありません。しかし、Windows上では、同じ環境設定を持ち、QGISと同じライブラリとインタプリタを使用することを確認する必要があります。これを行うための最速の方法は、QGISの起動バッチファイルを変更することです。

OSGeo4Wインストーラを使用した場合はOSGeo4Wインストールの bin フォルダの下にこれを見つけることができます。 C:\OSGeo4W\bin\qgis-unstable.bat のようなものを探してください。

For using Pyscripter IDE, here's what you have to do:

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

  • Open it in an editor. And remove the last line, the one that starts QGIS.

  • Add a line that points to your Pyscripter executable and add the command line argument that sets the version of Python to be used

  • さらに、QGISが使用するPythonのDLLをPyscripterが見つけられるフォルダを指す引数を追加します。これはOSGeoWインストールのbinフォルダの下に見つけることができます

    @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
    

Now when you double click this batch file it will start Pyscripter, with the correct path.

開発者の中ではEclipseがPyscripterよりも人気が高く、よく選択されます。以下のセクションでは、プラグインの開発とテストのためのプラグインの設定方法について説明します。 WindowsでEclipseを使用する環境を準備するには、バッチファイルを作成してEclipseを起動する必要があります。

To create that batch file, follow these steps:

  • Locate the folder where qgis_core.dll resides in. Normally this is C:\OSGeo4W\apps\qgis\bin, but if you compiled your own QGIS application this is in your build folder in output/bin/RelWithDebInfo

  • Locate your eclipse.exe executable.

  • Create the following script and use this to start eclipse when developing QGIS plugins.

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

Debugging using Eclipse and PyDev

Installation

To use Eclipse, make sure you have installed the following

Preparing QGIS

There is some preparation to be done on QGIS itself. Two plugins are of interest: Remote Debug and Plugin reloader.

  • Go to Plugins ‣ Manage and Install plugins...

  • リモートデバッグ を検索します(現時点では、それはまだ実験的ですので、それが表示されない場合は オプション タブ下の実験的なプラグインを有効にしてください)。それをインストールしてください。

  • プラグインの再ロード を検索し、またそれをインストールします。これにより、プラグインが再ロードされるようQGISを閉じて再起動しなくても、プラグインを再ロードできます。

Eclipseをセットアップする

Eclipseで、新しいプロジェクトを作成します。 一般的なプロジェクト を選択しておいて本当のソースを後でリンクできるので、このプロジェクトをどこに配置するかは実際は問題になりません。

../../../_images/eclipsenewproject.png

Eclipse project

Now right-click your new project and choose New ‣ Folder.

詳細 をクリックし、 別の場所に リンク(リンクフォルダ) を選択します。すでにデバッグしたいソースがある場合はこれらを選択してください。そうでない場合は、すでに説明したようにフォルダを作成してください。

するとビュー プロジェクトエクスプローラ で、ソースツリーがポップアップしますので、コードでの作業を開始できます。すでに利用可能な構文の強調表示や他のすべての強力なIDEツールが使用できるようになっています。

Configuring the debugger

To get the debugger working, switch to the Debug perspective in Eclipse (Window ‣ Open Perspective ‣ Other ‣ Debug).

Now start the PyDev debug server by choosing PyDev ‣ Start Debug Server.

EclipseはQGISからデバッグサーバーへの接続を待っています。QGISがデバッグサーバーに接続すると、Pythonスクリプトを制御できます。それはまさに私たちが Remote Debug プラグインをインストールしたものです。だからまだ起動していなければQGISを起動し、バグのシンボルをクリックしてください。

ここでブレークポイントを設定できます。コードがそこに達すると実行は停止し、プラグインの現在の状態を検査できます。(ブレークポイントは下の画像の緑色の点です。ブレークポイントを設定したい行の左空白でダブルクリックすることで設定します)。

../../../_images/breakpoint.png

ブレークポイント

今利用できる非常に興味深いものはデバッグコンソールです。先に進む前に、現在実行がブレークポイントで停止していることを確認してください。

コンソールビューを開きます( ウィンドウ ‣ ビューを表示 )。あまり面白くない デバッグサーバー コンソールが表示されるでしょう。しかし、もっと面白いPyDevデバッグコンソールに変更できるボタン コンソールを開く があります。 コンソールを開く ボタンの隣にある矢印をクリックして、 PyDevコンソール を選択してください。ウィンドウが表示され、どのコンソールを起動したいかを尋ねてきます。 PyDevデバッグコンソール を選択してください。グレーアウトしており、デバッガを起動して有効なフレームを選択するよう言われた場合は、リモートデバッガが付属され現在ブレークポイント上にいることを確かめてください。

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

PyDev Debug Console

今はもうインタラクティブコンソールが使用できるので、現在のコンテキスト内から任意のコマンドをテストできます。変数を操作するとか、API呼び出しするとか、何でも好きにできます。

ちょっと面倒なのですが、コマンドを入力するたびコンソールはデバッグサーバーに戻ります。この動作を停止するには、デバッグサーバーページで Pin Console ボタンをクリックしますが、少なくとも現在のデバッグセッションではこの決定は記憶されます。

EclipseにAPIを理解させる

非常に便利な機能は、Eclipseが実際にQGISのAPIについてわかっているようにすることです。これにより、タイプミスがないかコードを確認できます。これだけでなく、EclipseでのインポートからAPI呼び出しへ自動入力する支援を可能にします。

これを行うため、EclipseではQGISライブラリファイルを解析し、そこにすべての情報を取得します。しなければならないことは、どこのライブラリを検索するかをEclipseに伝えることだけです。

ウィンドウ ‣ 設定 ‣ PyDev ‣ インタプリタ ‣ Python をクリック。

ウィンドウの上部と下部にいくつかのタブで設定済みのPythonインタプリタ(現在QGISのためのpython2.7)が表示されます。私たちにとって興味深いタブは、 ライブラリ および 強制ビルトイン です。

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

PyDev Debug Console

まず[ライブラリ]タブを開きます。新規フォルダを追加し、QGISのインストールのPythonのフォルダを選択します。このフォルダがどこにあるか(それはプラグインフォルダではありません)わからない場合は、QGISを開き、Pythonのコンソールを起動し、簡単に qgis と入力してEnterを押します。使用するQGISモジュールとそのパスが表示されるでしょう。末尾の /qgis/__init__.pyc をこのパスから剥ぎ取ると、探しているパスになります。

You should also add your plugins folder here (it is in python/plugins under the user profile folder).

次に 強制組込関数 タブにジャンプし、 新規... をクリックして qgis と入力してください。これでEclipseがQGISのAPIを解析するようになります。おそらくEclipseがPyQt4のAPIもわかるようにしたいでしょう。そのためには強制組込関数としてPyQt4も追加します。それはおそらく、すでにライブラリタブに存在しなければなりません。

OK をクリックし、完了します。

注釈

QGIS APIが変更されるたびに(たとえば、QGISマスターをコンパイルしてSIPファイルを変更した場合)、このページに戻って 適用 をクリックする必要があります。これにより、Eclipseはすべてのライブラリを再び解析できます。

PDBを利用してデバッグする

EclipseなどのIDEを使用しない場合は、次の手順に従ってPDBを使用してデバッグできます。

First add this code in the spot where you would like to debug

# Use pdb for debugging
import pdb
# These lines allow you to set a breakpoint in the app
pyqtRemoveInputHook()
pdb.set_trace()

Then run QGIS from the command line.

On Linux do:

$ ./Qgis

On macOS do:

$ /Applications/Qgis.app/Contents/MacOS/Qgis

And when the application hits your breakpoint you can type in the console!

TODO:

Add testing information