省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

GIMP3 / Python プログラミング試行錯誤日誌: Python スクリプトのデバッグ方法

 GIMP3 用の Python プラグインスクリプトプログラミングにおいてデバッグする方法をまとめてみます。いくつか重要なポイントがありますので、それごとにまとめてみます。

1. メニューにちゃんと登録させる
 まず Python プラグインが、メニューにちゃんと登録され、表示されないと、エラーがあることはわかってもどこにエラーがあるのかわかりません。この状態だと手も足も出ない状態です。作成したプラグインがメニューに現れない理由としては次の6つの理由が考えられます。
1) プラグインをおいている場所が間違っている

 基本的に、ユーザのホームディレクトリの配下にある GIMP 設定ディレクトリにプラグインを入れます。位置は下記の通り。

Linux

~/.config/GIMP/3.0/plug-ins/

Windows

c:\users\%USERNAME%\AppData\Roaming\GIMP\plug-ins\

Mac OS

~/Library/Application Support/GIMP/3.0/plug-ins/

 

 なお、2.10 と 3.0 の違いとして、3.0 ではこのディレクトリの下に、プラグインのファイル名と同名のディレクトリを作成し、その下にファイル本体を入れないと認識されません。例えば、ファイル名が test.py だったら test というディレクトリを作りその下に入れます。

2) ファイルのプロパティが実行可能になっていない

 これは、LinuxMac OS のみ該当しますが、ファイル属性で実行可能になっていないとメニューに出てきません。ファイルプロパティを見て、実行可能にチェックを入れるか、chmod +x コマンドで変更してください。

3) 登録情報が間違っている

 2.10 の Register 関数に相当する登録情報が間違っていると、当然メニューに現れません。これについては先日の記事で登録情報を入れたテンプレートファイルを公開しておりますので、それを活用して、プログラムファイルを正しく登録してください。

 プログラミングを始める際は、最初にこのテンプレートを適宜編集して、まずこのテンプレートがメニューにちゃんと登録されることを確認してから、以降のコーディング作業を行うことを強く勧めます。

4) Python コードに文法エラーがある

 登録情報が正しくてもコードに文法エラーがあるとメニューから消えます。これについては、Visual Studio Code など統合開発環境 (IDE) を活用し、Python の文法チェックを有効にして開発することを強くお勧めします。

 なお、Linux 環境で VS Code を使って開発すると、2.10 とは異なり、ちゃんと GIMP 独自のライブラリを認識してくれ、力強いです。Windows の場合は、たぶん Pythonインタープリタを GIMP3 のインストールディレクトリ配下の Python インタープリタを指定すると同様になると思います(未確認)。ただ GIMP のライブラリが認識されなくても基本的な文法チェックはやれるので、問題はあまりないと思います。

 VS code でデフォルトで使う Python のパスを指定するには

[設定] (歯車のアイコン) → 設定の検索ボックスから "Python: Default"と入れる → Python: Default Interpreter Path でパスを指定。

5) 既存のプラグインPDB 検索名がバッティングしている

 def do_query_procedures(self): で指定する PDB 検索名を、既存の名前とバッティングしないように指定します。

6) 文字コードが間違っている

 文字コードUTF-8、改行コードは LF である必要があります。特に日本語を含む場合は、シフトJIS になっていないかどうか十分にご確認ください。

 

2. GIMP3 をコンソール (コマンドプロンプト) から verbose モードで起動する

 プログラムの論理エラー情報を出力するには、基本的に、OS のコンソールから  verbose モードで GIMP を起動し、verbose モードの ログ・コンソール画面からエラーメッセージを見ます。一部の論理エラーについては、GIMP 内のエラーコンソールから見ることができる場合もあります。

エラーメッセージの例

 コンソールからの起動コマンドは (デフォルト設定でインストールされている場合)、

Windows

"C:\Program Files\GIMP 3\bin\gimp.exe" --verbose

Linux (Flatpak インストールの場合)

flatpak run --system org.gimp.GIMP --verbose

です。

3. Gimp.message を活用する

 プログラムをデバッグするときに、途中の変数にどんな値が入っているのか、とか、プログラムのどこまで正常に進行したのか、などを確認したい場合があると思います。

この場合は Gimp.message API を活用します。

Gimp.message("文字列")

 なお、引数の文字列は UTF-8 でなければなりません。これをプログラムの随所に仕込んでおくと GIMP 内部のエラーコンソールに出力されます (OS のコンソールではありません)。従って、必ずエラーコンソールが見えるように設定しておいてください (デフォルトではオフです)。メニューの [ウィンドウ] > [ドッキング可能なダイアログ] の下に見当たるはずです。