You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

subprocess.run()执行ebsynth命令报错:unrecognized option 'output.png'

问题原因及解决方法

问题根源

  1. 参数拆分错误:-guide选项需要接收两个独立的文件路径参数,但你将source_segment.png和target_segment.png合并为单个字符串元素,subprocess会把这个合并后的字符串当作一个参数传递给ebsynth。这导致ebsynth无法正确识别参数结构,误将后续的output.png判定为未知选项,从而抛出error: unrecognized option 'output.png'。
  2. shell=True的参数传递冲突:当使用shell=True时,若以列表形式传递参数,Windows系统的cmd会以非预期的逻辑拼接参数,进一步打乱了ebsynth的参数解析流程。

解决方法

方法1:拆分独立参数(推荐)

移除shell=True,将每个命令行参数拆分为列表的独立元素,包括-guide后的两个文件名:

import subprocess

process = subprocess.run([
    'ebsynth',
    '-style', 'source_photo.png',
    '-guide', 'source_segment.png', 'target_segment.png',
    '-output', 'output.png'
], cwd=dir)

这种方式让subprocess直接传递每个独立参数,ebsynth能准确解析-guide所需的两个路径。

方法2:使用完整命令字符串(保留shell=True)

如果必须保留shell=True,将整个命令写成单个字符串传递:

import subprocess

cmd = "ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png"
process = subprocess.run(cmd, shell=True, cwd=dir)

此时shell会按照cmd的规则拆分参数,和你手动在cmd中执行的效果完全一致。

内容的提问来源于stack exchange,提问作者Meet Gondaliya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:40:38