PyCharmを使ったQGIS Pluginのデバッグ方法

自分用のメモです。

インストール

こちらからpycharmをインストールします。
QGIS Pluginのデバッグ(リモートデバッグ)をするためにはProffesional Editionが必要です。(30日ぐらいの試用期間があります。)
http://www.jetbrains.com/pycharm/

プラグインの作成

QGISのPluginを作るためのプラグイン QGIS Plugin Builderをインストールして実行します。
C:\Users\username\.qgis2\python\pluginsの中にtestpluginを保存して以下のコマンドで、uiとresouecesを.pyに変換しておきます。

pyuic4 ui_testplugin.ui -o ui_testplugin.py
pyrcc4 resources.qrc -o resources_rc.py

macの場合、保存先は.qgis2の中ではなくて、自分のアクセスしやすい場所にして、シンボリックリンクを張ると良いかもしれません。

ln -s /Users/fugafuga/testplugin /Users/fugafuga/.qgis2/python/plugins/testplugin

QGISを起動して、testpluginが起動できればOKです。

デバッグの準備1

デバッグ用のeggを作成したtestpluginフォルダの中にコピーします。
cp /Applications/PyCharm.app/pycharm-debug.egg /Users/fugafuga/testplugin/

windowsならここからコピー C:\Program Files (x86)\JetBrains\PyCharm 3.0.2)

作成したプラグインのメインコード(testplugin.py)に以下のコードを追加します。

sys.path.append("/Users/fugafuga/testplugin/pycharm-debug.egg")
import pydevd

同じく以下のコードをデバッグを開始したい位置に追加します。(runの下とか)

pydevd.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True)

デバッグ2

pycharmを起動して、/Users/fugafuga/testpluginを開きます。
(初めて起動するときは、pythonのパスを聞かれるかもしれませんが、指定する必要はありません。)
Run -->Edit Configurationsを開いて、+ボタンを押してPython Remote Debugを選択して以下のように設定します。

Name:remote_debug
Local host name:localhost
Port:53100

Run-->Debug'remote_debug'を実行して、デバッグサーバーを起動します。

デバッグ

QGISを起動して、プラグインを実行すると、pydevd.settrace()の部分で停止します。
あとは、通常のデバッグ方法と同じで、ステップインやブレークポイントを設定してデバッグします。

感想

なぜか、Run -->Edit Configurations でpython を選らんでしまい、サーバーが起動しないと悩んでいたので気を付けましょう。
他にも色々機能があるようなので、試してみたい