在windows上用python编写gimp插件 - 我该如何调试?输出在哪里?

vis*_*ish 20 python gimp gimpfu

EDITED HEAVILY有一些新信息(和赏金)

我正在尝试在python中为gimp创建一个插件.(在Windows上)这个页面http://gimpbook.com/scripting/notes.html建议从shell运行它,或者查看〜/ .xsession-errors

既不工作.我可以从cmd shell运行它,如

gimp-2.8.exe -c --verbose ##(由http://gimpchat.com/viewtopic.php?f=9&t=751建议)

这会导致"pdb.gimp_message(...)"的输出转到终端.

但是!!! 这只有当一切都按预期运行时才有效,我在崩溃时没有输出.

我试过打印声明,它们无处可去.

这个人有类似的问题,但讨论却陷入了困境. 插件通常不起作用,我该如何调试?


在某些地方,我看到了在python-fu控制台中运行它的建议.

这让我无处可去.我需要注释掉导入gimpfu,因为它会引发错误,而且我没有让gtk工作.


我当前的问题是,即使插件在菜单上注册并显示,当出现一些错误并且它没有按预期运行时,我也不知道从哪里开始寻找提示.(我试过点击各种情况,w - w/o选择,没有图像.)

我能够从http://gimpbook.com/scripting/复制并执行示例插件 ,我得到了,工作,但是当我做出改变时,我不知道是什么,并且逐行变形现有程序是乏味的.(每次都要关闭和恢复gimp)


总结一下 -

1-我可以刷新插件而无需重启gimp吗?(所以至少我的慢变形会更快)

2-我可以从python-fu shell运行插件.(而不是只是导入它们以确保它们解析.)

3-是否有错误日志我错过了,或者有什么效果?

4-有没有办法在shell上运行gimp来查看输出?(我最好在cygwin(或virtualbox ..)下)?

5-我还没有查找如何将winpdb连接到现有进程.我如何将它连接到在gimp中运行的python进程?

谢谢

Omi*_*aha 22

1-我可以刷新插件而无需重启gimp吗?(所以至少我的慢变形会更快)

添加脚本或更改register()时,必须重新启动GIMP.更改脚本的其他部分时无需重新启动 - 它作为单独的进程运行,并且每次都会从磁盘重新读取.

有用的来源:http: //gimpbook.com/scripting/notes.html

2-我可以从python-fu shell运行插件.(而不是只是导入它们以确保它们解析.)

是的,您可以在python-fu控制台中访问已注册的插件:

>>> pdb.name_of_registerd_plug-in
Run Code Online (Sandbox Code Playgroud)

可以称之为:

>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)
Run Code Online (Sandbox Code Playgroud)

同样在python-fu对话框控制台中,您可以单击Browse ..选项并查找已注册的插件,然后单击Apply,将其导入python-fu控制台.

有用的来源:http: //registry.gimp.org/node/28434

3-是否有错误日志我错过了,或者有什么效果?

要记录,您可以定义如下函数:

def gimp_log(text):
    pdb.gimp_message(text)
Run Code Online (Sandbox Code Playgroud)

并在您的代码中随时使用它.

要查看该日志,在gimp程序中,打开Error ConsoleDockable DialogsWindows菜单中,另有一个消息框,将在每次制作日志时弹出.

您也可以重定向stdinstdout到一个文件,:

import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')
Run Code Online (Sandbox Code Playgroud)

当你这样做的时候,所有人exceptions都会去,err.txt并且所有打印输出都将转到log.txt 注意打开文件带a选项而不是w保留日志文件.

有用的来源:

如何在Gimp python脚本中将信息输出到控制台?

http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2

4-有没有办法在shell上运行gimp来查看输出?(我最好在cygwin(或virtualbox ..)下)?

我有一些错误,但可能会再试一次......

5-我还没有查找如何将winpdb连接到现有进程.我如何将它连接到在gimp中运行的python进程?

首先安装winpdb,还要安装wxPython(Winpdb GUI依赖于wxPython)

请注意,它Gimp有自己的python解释器,可能要安装winpdb到默认的python解释器或gimp python解释器.

如果安装winpdb到默认的python解释器,则需要将rpdb2.py已安装的文件复制到..\Lib\site-packagesgimp python解释器路径.

之后你应该可以pdb2Python-Fugimp的控制台导入模块:

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
>>>
Run Code Online (Sandbox Code Playgroud)

现在在您的插件代码中,例如在您的main函数中添加以下代码:

import rpdb2 # may be included out side of function.
rpdb2.start_embedded_debugger("pass") # a password that will asked by winpdb
Run Code Online (Sandbox Code Playgroud)

接下来,转到gimp并运行你的python插件,当你运行你的插件时,它会运行,然后等到达到上面的代码.

现在打开Winpdb GUI..\PythonXX\Scripts运行winpdb_.pyw.

(请注意,当使用Winpdb进行远程调试时,请确保路上的任何防火墙都打开TCP端口51000.请注意,如果使用端口51000,Winpdb将搜索51000和51023之间的备用端口.)

然后,在Winpdb GUIFile菜单中选择attach,并给pass作为密码,然后你可以看到,名单上你的插件脚本,选择它,并开始逐步调试的一步.

使用Winpdb调试python gimp插件

有用的资源: 在Windows上安装PyGIMP

有用的来源:

http://wiki.gimp.org/index.php/Hacking:Plugins

http://www.gimp.org/docs/python/index.html

http://wiki.elvanor.net/index.php/GIMP_Scripting

http://www.exp-media.com/gimp-python-tutorial

http://coderazzi.net/python/gimp/pythonfu.html

http://www.ibm.com/developerworks/opensource/library/os-autogimp/os-autogimp-pdf.pdf