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进程?
谢谢
1-我可以刷新插件而无需重启gimp吗?(所以至少我的慢变形会更快)
添加脚本或更改register()时,必须重新启动GIMP.更改脚本的其他部分时无需重新启动 - 它作为单独的进程运行,并且每次都会从磁盘重新读取.
有用的来源:http: //gimpbook.com/scripting/notes.html
2-我可以从python-fu shell运行插件.(而不是只是导入它们以确保它们解析.)
是的,您可以在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-有没有办法在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-packages
gimp python解释器路径.
之后你应该可以pdb2
从Python-Fu
gimp的控制台导入模块:
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 >>>
现在在您的插件代码中,例如在您的main函数中添加以下代码:
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: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