python无法导入gimpfu

Yot*_*tam 1 python gimp python-fu gimpfu

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

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

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

Alb*_*rto 5

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

GIMP 2\lib\gimp\2.0\plug-ins 
Run Code Online (Sandbox Code Playgroud)

并在那里复制您的脚本。当然,您必须添加如下注册内容:

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

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

python myscript.py
./myscript.py
>>> myscript
Run Code Online (Sandbox Code Playgroud)

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

Filters->Python-fu->Console
Run Code Online (Sandbox Code Playgroud)

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

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


xjc*_*jcl 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!
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将您的脚本标记为可执行

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

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

    gimp -i -b '(my-script RUN-NONINTERACTIVE "example.png")' -b '(gimp-quit 0)'
    
    Run Code Online (Sandbox Code Playgroud)

    如上所述,请勿这样做:

    python my_script.py   # bad!
    
    Run Code Online (Sandbox Code Playgroud)

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

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