把 ComfyUI 可视化工作流一键导出为可执行的 Python 脚本,实现自动化与可重复生成。
ComfyUI 提供节点图运行时,本扩展负责导出转换,生成脚本复用 ComfyUI 运行时与参数解析器。
方案简介
ComfyUI-to-Python-Extension 是一个把 ComfyUI 可视化工作流转换为可执行 Python 脚本的扩展/工具。你在 ComfyUI 界面里搭建好节点图后,可以直接通过 File -> Save As Script 导出脚本,或用 CLI 把已保存的 API 格式工作流 JSON(workflow_api.)转换成独立可运行的 .py 文件。
它解决的问题很直接:节点图适合探索,但不适合自动化、批量实验和可重复的生成任务。这个项目让你"从节点图走向自动化、实验和可重复生成",无需手工重建整个流程。
适合两类使用者:
- 想在 ComfyUI 界面内一键导出脚本的 ComfyUI 用户(安装为 Web UI 扩展);
- 只想离线转换工作流 JSON 的自动化用户(仅需 CLI,仓库可放在任意位置)。
要求 Python 3.12 及以上,且需要一份可用的 ComfyUI 安装作为运行时。
亮点与能力
- Web UI 一键导出:在 ComfyUI 菜单
File -> Save As Script直接下载生成的.py文件; - CLI 批量转换:
python -m comfyui_to_python支持--input_file、--output_file、--queue_size参数; - 生成脚本可复用 ComfyUI 的内存参数,如
--highvram、--normalvram、--lowvram、--novram、--cpu、--disable-smart-memory; - UI 导出的脚本内嵌前端工作流元数据,生成的图片可直接拖回 ComfyUI 恢复原工作流;
queue_size可控制脚本默认执行次数;- 结束时 best-effort 清理模型/缓存,支持
COMFYUI_TOPYTHON_UNLOAD_MODELS=1或main(unload_models=True)在重复调用宿主中主动卸载模型。
组成与分工
- ComfyUI:提供节点图编辑界面与运行时;生成的脚本依赖 ComfyUI 代码库运行,通过
COMFYUI_PATH或向上搜索父目录定位; - ComfyUI-to-Python-Extension:核心转换器,作为 custom_nodes 扩展提供
Save As Script,并作为 CLI 模块comfyui_to_python导出脚本; - uv:用于安装扩展依赖(
uv pip install -e)及在 CLI 场景创建并运行扩展自身虚拟环境(uv sync); - torch:ComfyUI 的运行时依赖,生成脚本运行需要,CLI 环境缺失时会报
ModuleNotFoundError: No module named 'torch'; - extra_model_paths.yaml:可将扩展所在目录加入 ComfyUI 的
custom_nodes搜索路径; - Git:克隆仓库到本地。
前置要求
- Python 3.12 或更新版本(运行扩展的环境);
- 一份可运行的 ComfyUI 安装(源码 checkout 或 Windows portable 版);
- Web UI 扩展方式需将仓库置于 ComfyUI 的
custom_nodes可发现路径下。
Web UI 扩展安装(直接克隆进 custom_nodes):
bash
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/pydn/ComfyUI-to-Python-Extension.git
或克隆到别处后建立符号链接:
bash
git clone https://github.com/pydn/ComfyUI-to-Python-Extension.git
cd /path/to/ComfyUI/custom_nodes
ln -s /path/to/ComfyUI-to-Python-Extension ComfyUI-to-Python-Extension
源码 + uv 运行 ComfyUI 时,将依赖装进 ComfyUI 的运行环境:
bash
cd /path/to/ComfyUI
uv pip install -e ./custom_nodes/ComfyUI-to-Python-Extension
uv run python main.py
Windows portable 版:
cd C:\path\to\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-to-Python-Extension
..\..\..\python_embeded\python.exe -m pip install -e .
实施步骤
1. 选择使用方式
Web UI 扩展方式需按前置要求把仓库放进 custom_nodes 并安装依赖,然后重启 ComfyUI;纯 CLI 方式仓库可放在任意位置:
bash
git clone https://github.com/pydn/ComfyUI-to-Python-Extension.git
cd ComfyUI-to-Python-Extension
uv sync
export COMFYUI_PATH=/path/to/ComfyUI
2. 在 ComfyUI 中准备工作流
- 在 ComfyUI 中,如需要先启用 dev mode options。
- 以 API 格式保存工作流:
File -> Export (API),得到workflow_api.。
3. 运行导出器
bash
uv run python -m comfyui_to_python
带参数版本:
bash
uv run python -m comfyui_to_python \
--input_file workflow_api. \
--output_file workflow_api.py \
--queue_size 10
旧版封装仍可用:
bash
uv run python comfyui_to_python.py
4. Web UI 方式导出
在较新的 ComfyUI 构建中,Save As Script 通常位于 File -> Save As Script,命令会下载生成的 .py 文件(默认文件名 workflow_api.py)。
使用与配置要点
- 路径定位:
COMFYUI_PATH优先检查;未设置时导出器会向上搜索名为ComfyUI的父目录; - 生成脚本参数:
--input_file(默认workflow_api.)、--output_file(默认workflow_api.py)、--queue_size(默认执行次数,默认 10); - 内存调优:生成脚本 bootstrap 时复用 ComfyUI 运行时参数解析器,可直接向导出的
.py传--highvram、--normalvram、--lowvram、--novram、--cpu、--disable-smart-memory; - 模型卸载:如需每次运行后激进卸载模型(嵌入或重复调用宿主),设置
COMFYUI_TOPYTHON_UNLOAD_MODELS=1或调用main(unload_models=True); - 验证成功:UI 导出脚本生成的图片可直接拖回 ComfyUI 并恢复原工作流元数据。
注意事项与常见问题
- Python 版本不支持:在运行扩展的环境用 Python 3.12+,并在该环境重装扩展依赖;
uv sync后 Web UI 导入失败:uv sync把依赖装进扩展自己的.venv,但 ComfyUI 用自己的 Python 解释器加载 custom nodes,需把扩展装进启动 ComfyUI 的解释器环境;- Windows portable 导入失败:使用随附的
python_embeded解释器..\..\..\python_embeded\python.exe -m pip install -e .,然后重启 ComfyUI; - CLI 报
No module named 'torch':扩展.venv缺少 ComfyUI 运行时依赖,改用启动 ComfyUI 的环境运行 CLI,或把COMFYUI_PATH指向已安装的目标 ComfyUI; - 看不到
Save As Script:检查前端菜单版本并在File下找;重启后仍看不到则确认仓库可通过custom_nodes、符号链接或extra_model_paths.yaml被 ComfyUI 发现; - 生成脚本依赖 ComfyUI 运行时:找不到 ComfyUI 时设置
COMFYUI_PATH;模型或路径缺失时检查目标 ComfyUI 安装及其extra_model_paths.yaml。
优缺点
- ✓ UI 一键 Save As Script
- ✓ 支持 --highvram 等内存参数直
- ✕ 脚本不自动把输入转为命令行参数
- ✕ 不支持跨调用提示词缓存
出处
本方案挖掘自开源项目 pydn/ComfyUI-to-Python-Extension,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。