【问题标题】:How to Execute Python-Fu script from shell via Gimp如何通过 Gimp 从 shell 执行 Python-Fu 脚本
【发布时间】:2015-03-12 03:07:29
【问题描述】:

我正在尝试找出一种简单的方法来执行我编写的 Python-Fu 脚本,该脚本在 Gimp 的 Python-Fu 解释器插件中以单线程模式工作,但在重构为其多处理等效项时将不再工作由于Pool.map_async() 中弹出的 Windows 非 POSIX / OS.Fork 限制。作为一种解决方法,我试图直接从 cmd shell 调用脚本,但无法找出正确的命令来完成它。我的 PATH 变量上有 gimp bin 目录,并且正在尝试实现以下目标...

c:\>gimp-console-2.8 --no-interface --batch "(python-fu execfile('myPyFuScript.py'))"
c:\>gimp-console-2.8 --no-interface --batch "myPyFuScript.py"

有没有办法让 Gimp 使用它的 Python-Fu 模块从 Windows cmd shell 发出的命令执行 python 脚本?

只是为了增加背景,我从以下documentation...中获得灵感...

从 Shell 调用 GIMP Python

这一切意味着你可以 轻松调用 GIMP Python 插件,例如上面的直接 使用 (plug-in-script- fu-eval ...) 评估器从您的 shell 中:

gimp --no-interface --batch '(python-fu-console-echo RUN-NONINTERACTIVE "another string" 777 3.1416 (list 1 0 0))' '(gimp-quit 1)'

【问题讨论】:

    标签: python shell gimp python-fu


    【解决方案1】:

    --batch 之后传递给 GIMP 的字符串本身在 script-fu 中执行。 在那里运行 Python 脚本的简单方法是编写一个 script-fu 表达式来调用你的 python 过程。例如:

    gimp  -n --no-interface --batch "(python-fu-gradient-save-as-css  RUN-NONINTERACTIVE \"Sunrise\" \"/tmp/grad.css\")" --batch "(gimp-quit 1)"
    

    除了使用 script-fu 表达式 "(python-fu-gradient-save-as-css ... )" 之外,您还应该注意以下几点:

    • 使用-n 确保它在新的 GIMP 实例中运行(也许这根本不需要 - 它在这里对我有用)
    • 使用双引号 (") 来分隔 script-fu 字符串中的字符串参数。单引号在 scheme/script-fu 中有不同的语法含义。
    • 需要致电 gimp-quit 1 - 否则,即使使用 --no-interface --batch,GIMP 也会继续运行。

    由于您将从外部 Python 脚本调用 GIMP,因此转义 " 不是问题 - 但人们从 Windows 中的命令提示符调用它必须找到一种创造性的方法来做到这一点。 (上面,它们在 bash shell 中使用\ 进行转义)

    这应该可以回答您的问题。但是,我将进一步挖掘: 除非您在脚本中执行的处理非常繁重,否则为每个脚本调用调用单独的 GIMP 实例的开销可能很大(我没有测量内存使用情况 - 在我的 i5 上每次调用大约需要 2 秒任务被操作系统正确缓存后的非 SSD 机器 - 所以你不妨忍受它)。

    但是我的方法是,因为性能是一个问题,所以我的方法是编写 GIMP-Python 过程来实例化 XMLRPC(或JSONRPC)服务器和外部控制脚本以通过 RPC 调用“真实”过程.在 Python 中使用 XMLRPC 很容易 - 少于 10 行样板代码,您可以直接从 http://python.org 的模块文档中复制和粘贴。这样你就可以准备好一个 GIMO 进程池来执行你的任务,只需一个简单、快速的 RPC 调用(每个逻辑核心一个 GIMP,你必须在控制脚本上放置一些逻辑来循环/排队调用,当然)。

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多