2

我正在尝试使用 pythonfu 编写一个 gimp 脚本。但是,当我尝试在本地运行脚本时,出现错误

`--> ./vvv.py
Traceback (most recent call last):
  File "./vvv.py", line 5, in <module>
    from gimpfu import *
ImportError: No module named gimpfu

我收集到该脚本可能只能通过 gimp 加载。但是,脚本不会出现在 gimp 菜单中。在这种情况下,我如何获得错误输出?

4

4 回答 4

5

根据您的操作系统,您必须查找 GIMP 插件的目录,例如:

GIMP 2\lib\gimp\2.0\plug-ins 

并在那里复制你的脚本。当然,您必须添加类似这样的注册内容:

register(
    "python-fu-draw",                                #<- this is plugin name
    N_("brief"),                                     #<- description
    "Long",                                          #<- description
    "name surname",                                  #<- author
    "@Copyright 2013",                               #<- copyright info
    "2013/10/29",                                    #<- creation date
    N_("_Draw..."),                                  #<- label shown in gimp's menu
    "",  #<- kind of image requested from your script (INDEX,RGB,...and so on)
    [                                                #<- input parameters array
        (PF_FILE, "ifile", N_("Color input file"), 'default.txt'),
],
[],                                                  #<- output parameters array (usually empty)
draw,                                                #<- main method to call 
menu="<Image>/Filters/",                             #<- Where add your plugin
domain=("gimp20-python", gimp.locale_directory) 
)

main()                                               #<- don't forget this

将脚本复制到具有正确注册内容的正确目录后,您可以运行 GIMP 并运行脚本,在您在注册内容中选择的下拉菜单中选择它。您不必从 python 控制台运行它。所以那些行不通:

python myscript.py
./myscript.py
>>> myscript

要以交互方式调试脚本,请从 gimp 打开一个 python-fu 控制台:

Filters->Python-fu->Console

看看这个网站。主要是幻灯片非常有用。

如果您想以批处理模式运行脚本,请查看

于 2013-10-30T12:50:36.240 回答
5

这是预期的行为。GIMP 的 Python 插件有一个不同寻常的设计:不要直接调用 Python 脚本,而是调用 GIMP,它会依次调用您的脚本(GUI 和命令行脚本都是如此)。


  1. 确保在脚本末尾注册您的中心函数:

    from gimpfu import *
    
    # ... your script ...
    
    args = [(PF_STRING, 'file', 'GlobPattern', '*.*')]   # adjust to your function
    register('my-script', '', '', '', '', '', '', '', args, [], my_function)
    main()   # GIMP's main(), do not write your own!
    
  2. 标记您的脚本可执行文件

    chmod +x my_script.py
    
  3. 复制、移动或硬链接您的脚本,使其位于 GIMP 的插件目录中:

    ln my_script.py ~/.gimp-2.8/plug-ins/my_script.py
    
  4. 您现在可以调用 GIMP,它会调用您的脚本(警告:GIMP 有点慢)

    gimp -i -b '(my-script RUN-NONINTERACTIVE "example.png")' -b '(gimp-quit 0)'
    

    如上所述,不要这样做:

    python my_script.py   # bad!
    

括号是由于它是一个Scheme函数调用。出于同样的原因,您必须将可用函数列表中的所有连字符替换为下划线(可以在 GIMP GUI 中找到Help > Procedure Browser)。

如果您需要示例脚本,请查看文档我的脚本

于 2017-08-21T13:06:30.213 回答
0

Python 插件没有出现在 GIMP 中的一个常见原因是语法错误。一种快速、可编写脚本的检查方式:

python -m py_compile vvv.py

在 Windows 平台上,成功的编译将返回%errorlevel%0。

于 2013-11-09T07:08:14.397 回答
0

转述原帖:我写了一个 Python GIMP 插件并安装在正确的位置,但它没有出现在 GIMP 的过滤器菜单中,那么我该如何调试呢?

最常见的原因是当您将插件的源 (.py) 文件复制到正确的位置时,您没有授予执行权限。(这是 GIMP 的一个已知怪癖,它不会读取没有执行权限的 Python 插件源。)

另一个问题可能是:我的插件出现在 GIMP 过滤器菜单中,但它没有按我的预期默默工作,我该如何调试它?

您可以在控制台(终端)中启动 GIMP,以便插件中的任何调试打印都进入控制台,或者按照另一个答案中的建议使用 Filters>Python-Fu>Console。

如果您的插件崩溃,GIMP GUI 将显示回溯,或者它会出现在您启动 GIMP 的控制台中。

另一个问题可能是:我可以调试导入 PyGimp 模块的 Python 脚本吗?(最常见的是 gimpfu,它是一个导入其他 PyGimp 模块的综合模块。)例如,您有一个供 GIMP Python 插件使用的 Python 模块,并且您想在不启动 GIMP 的情况下测试它的一部分(例如,对其进行 doctest) .

您可能可以按照标准安装 PyGimp(到 Python 目录中):下载 PyGimp、.configure、make、make install。(我没有尝试过,也无法轻松找到 PyGimp 的可下载源包。)通常,PyGimp 模块与 GIMP 一起安装,而不是安装在 Python 目录中(GIMP 只是在启动 Python 解释器时与 PYTHON_PATH 混淆,所以找到 PyGimp 模块?)或者在您的环境(shell 或 IDE)中,您可以更改 PYTHON_PATH 以便它包含包含 PyGimp 模块的 GIMP 安装的子目录。

于 2014-08-02T15:09:05.337 回答