プラグインを書いてデバッグするための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 itpyscripter.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 isC:\OSGeo4W\apps\qgis\bin
, but if you compiled your own QGIS application this is in your build folder inoutput/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¶
Preparing QGIS¶
There is some preparation to be done on QGIS itself. Two plugins are of interest: Remote Debug and Plugin reloader.
Go to
リモートデバッグ を検索します(現時点では、それはまだ実験的ですので、それが表示されない場合は オプション タブ下の実験的なプラグインを有効にしてください)。それをインストールしてください。
プラグインの再ロード を検索し、またそれをインストールします。これにより、プラグインが再ロードされるようQGISを閉じて再起動しなくても、プラグインを再ロードできます。
Eclipseをセットアップする¶
Eclipseで、新しいプロジェクトを作成します。 一般的なプロジェクト を選択しておいて本当のソースを後でリンクできるので、このプロジェクトをどこに配置するかは実際は問題になりません。
Now right-click your new project and choose
.詳細 をクリックし、 別の場所に リンク(リンクフォルダ) を選択します。すでにデバッグしたいソースがある場合はこれらを選択してください。そうでない場合は、すでに説明したようにフォルダを作成してください。
するとビュー プロジェクトエクスプローラ で、ソースツリーがポップアップしますので、コードでの作業を開始できます。すでに利用可能な構文の強調表示や他のすべての強力なIDEツールが使用できるようになっています。
Configuring the debugger¶
To get the debugger working, switch to the Debug perspective in Eclipse (
).Now start the PyDev debug server by choosing
.EclipseはQGISからデバッグサーバーへの接続を待っています。QGISがデバッグサーバーに接続すると、Pythonスクリプトを制御できます。それはまさに私たちが Remote Debug プラグインをインストールしたものです。だからまだ起動していなければQGISを起動し、バグのシンボルをクリックしてください。
ここでブレークポイントを設定できます。コードがそこに達すると実行は停止し、プラグインの現在の状態を検査できます。(ブレークポイントは下の画像の緑色の点です。ブレークポイントを設定したい行の左空白でダブルクリックすることで設定します)。
今利用できる非常に興味深いものはデバッグコンソールです。先に進む前に、現在実行がブレークポイントで停止していることを確認してください。
コンソールビューを開きます( デバッグサーバー コンソールが表示されるでしょう。しかし、もっと面白いPyDevデバッグコンソールに変更できるボタン コンソールを開く があります。 コンソールを開く ボタンの隣にある矢印をクリックして、 PyDevコンソール を選択してください。ウィンドウが表示され、どのコンソールを起動したいかを尋ねてきます。 PyDevデバッグコンソール を選択してください。グレーアウトしており、デバッガを起動して有効なフレームを選択するよう言われた場合は、リモートデバッガが付属され現在ブレークポイント上にいることを確かめてください。
)。あまり面白くない今はもうインタラクティブコンソールが使用できるので、現在のコンテキスト内から任意のコマンドをテストできます。変数を操作するとか、API呼び出しするとか、何でも好きにできます。
ちょっと面倒なのですが、コマンドを入力するたびコンソールはデバッグサーバーに戻ります。この動作を停止するには、デバッグサーバーページで Pin Console ボタンをクリックしますが、少なくとも現在のデバッグセッションではこの決定は記憶されます。
EclipseにAPIを理解させる¶
非常に便利な機能は、Eclipseが実際にQGISのAPIについてわかっているようにすることです。これにより、タイプミスがないかコードを確認できます。これだけでなく、EclipseでのインポートからAPI呼び出しへ自動入力する支援を可能にします。
これを行うため、EclipseではQGISライブラリファイルを解析し、そこにすべての情報を取得します。しなければならないことは、どこのライブラリを検索するかをEclipseに伝えることだけです。
をクリック。
ウィンドウの上部と下部にいくつかのタブで設定済みのPythonインタプリタ(現在QGISのためのpython2.7)が表示されます。私たちにとって興味深いタブは、 ライブラリ および 強制ビルトイン です。
まず[ライブラリ]タブを開きます。新規フォルダを追加し、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