Windows 上の GIMP 用の Python プラグインを作成しています。このページシェルから実行するか、~/.xsession-errors を確認することを提案します。どちらも機能しません。次のように cmd シェルから実行できます。
gimp-2.8.exe -c --verbose
からこここれにより、出力がpdb.gimp_message(...)
ターミナルに送られますが、すべてが期待どおりに実行されている場合にのみ機能します。クラッシュ時には出力が得られません。print ステートメントを試しましたが、どこにも出力されません。これ同様の問題です。
Python-Fu コンソールから実行しても何も起こりません。エラーが発生し、GTK が動作しないため、コメントアウトする必要がありますimport gimpfu
。プラグインが登録されてメニューに表示されても、エラーが発生した場合、ヒントをどこで探せばよいかわかりません。
- GIMP を再起動せずにプラグインを更新できますか?
- プラグインをインポートするのではなく、Python-Fu シェルから実行して解析を確認することはできますか?
- エラーログはありますか?
- Windows 上でシェルから GIMP を実行して出力を確認するにはどうすればよいでしょうか? Cygwin または VirtualBox のどちらの方がよいでしょうか?
- GIMP で実行される Python プロセスに Winpdb を接続するにはどうすればいいですか?
ベストアンサー1
1- GIMP を再起動せずにプラグインを更新できますか? (少なくともスローモーフは速くなります)
スクリプトを追加したり、register() を変更したりした場合は、GIMP を再起動する必要があります。スクリプトの他の部分を変更する場合は再起動する必要はありません。スクリプトは別のプロセスとして実行され、毎回ディスクから再読み取りされます。
役に立つ情報源:http://gimpbook.com/scripting/notes.html
2- python-fu シェルからプラグインを実行できますか。(解析を確実に行うためにインポートするのではなく)
python-fu
はい、コンソールで登録したプラグインに次のようにアクセスできます。
>>> pdb.name_of_registerd_plug-in
次のように呼び出すこともできます:
>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)
また、python-fu
ダイアログ コンソールで、Browse ..
オプションをクリックして登録済みのプラグインを見つけ、 をクリックしてコンソールApply
にインポートすることもできます。python-fu
役に立つ情報源:http://registry.gimp.org/node/28434
3- 見逃しているエラー ログなどはありますか?
ログを記録するには、次のような関数を定義します。
def gimp_log(text):
pdb.gimp_message(text)
いつでも好きなときにコード内で使用できます。
そのログを表示するには、プログラムでメニューからgimp
開きます。そうしないと、ログを作成するたびにメッセージ ボックスがポップアップ表示されます。Error Console
Dockable Dialogs
Windows
また、ファイルにリダイレクトするstdin
こともできます。stdout
import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')
これを実行すると、すべてがexceptions
に移動しerr.txt
、すべてが印刷されます。ログ ファイルを保持する代わりに、オプションlog.txt
を使用してファイルを開くことに注意してください。a
w
役立つ情報源:
Gimp Python スクリプトでコンソールに情報を出力するにはどうすればよいですか?
http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2
4- シェルから Windows 上で gimp を実行して出力を確認する方法はありますか? (cygwin (または virtualbox..) の方が良いでしょうか)?
それについてはエラーが発生しましたが、もう一度試してください...
5- 既存のプロセスに winpdb を接続する方法をまだ調べていません。gimp 内で実行される python プロセスに接続するにはどうすればよいでしょうか?
最初のインストールウィンpdb、またwxPython(Winpdb GUI は wxPython に依存します)
独自の Python インタープリターがあるためGimp
、winpdb
デフォルトの Python インタープリターまたは Gimp Python インタープリターにインストールする必要がある場合があります。
デフォルトの Python インタープリターにインストールする場合は、インストールされたファイルをGimp Python インタープリターのパスにwinpdb
コピーする必要があります。rpdb2.py
..\Lib\site-packages
その後、gimp のコンソールpdb2
からモジュールをインポートできるようになります。Python-Fu
GIMP 2.8.10 Python Console
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
>>> import rpdb2
>>>
次に、プラグイン コード、たとえばメイン関数に次のコードを追加します。
import rpdb2 # may be included out side of function.
rpdb2.start_embedded_debugger("pass") # a password that will asked by winpdb
次に、gimp に移動して Python プラグインを実行します。プラグインを実行すると、プラグインが実行され、上記のコードに到達するまで待機します。
開くには、Winpdb GUI
に移動し..\PythonXX\Scripts
て実行しますwinpdb_.pyw
。
(リモートデバッグにWinpdbを使用する場合は、ファイアウォール途中で TCP ポート 51000 が開きます。ポート 51000 が使用されている場合、Winpdb は 51000 と 51023 の間で代替ポートを検索することに注意してください。
次に、メニューWinpdb GUI
から選択してパスワードを入力すると、そのリストにプラグイン スクリプトが表示されるので、それを選択して、段階的にデバッグを開始します。File
attach
pass
役立つリソース:Windows に PyGIMP をインストールする
役に立つ情報源:
http://wiki.gimp.org/index.php/Hacking:プラグイン
http://wiki.elvanor.net/index.php/GIMP_Scripting
http://www.exp-media.com/gimp-python-tutorial
http://www.ibm.com/developerworks/opensource/library/os-autogimp/os-autogimp-pdf.pdf