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

 手机用户2502909293 发布于 2023-02-08 12:19

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 个回答
  • 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 ConsoleDockable DialogsWindows菜单中,另有一个消息框,将在每次制作日志时弹出.

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

    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-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
    >>>
    

    现在在您的插件代码中,例如在您的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 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

    2023-02-08 12:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有