如何从旧版本 ComfyUI 升级到最新版而不丢失自定义节点

文章导读
升级 ComfyUI 而不丢失自定义节点的核心操作是先备份 custom_nodes 文件夹,再通过 Git 或 ComfyUI-Manager 执行更新。适用场景为本地源代码部署或便携版用户,主要风险在于核心 API 变更可能导致旧版节点报错或无法加载。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

升级 ComfyUI 而不丢失自定义节点的核心操作是先备份 custom_nodes 文件夹,再通过 Git 或 ComfyUI-Manager 执行更新。适用场景为本地源代码部署或便携版用户,主要风险在于核心 API 变更可能导致旧版节点报错或无法加载。

先说结论:备份自定义节点目录与配置文件是升级前必须步骤,更新后需验证节点注册状态。

  • 适合:使用 Git 克隆安装或 Windows 便携版的 ComfyUI 用户
  • 先准备:备份 custom_nodes、user 目录及重要工作流文件
  • 验收:启动后检查控制台日志无 ImportError,节点面板显示正常

命令速用版

若通过 Git 安装,进入 ComfyUI 目录执行拉取命令更新核心框架,随后更新依赖包。

cd path/to/ComfyUI
git pull origin main
pip install -r requirements.txt `--upgrade`

若使用 ComfyUI-Manager 管理节点,可通过内置命令检查更新并创建快照备份。

./cm-cli.sh snapshot create `--name` "pre_upgrade_backup"
./cm-cli.sh check `--updates`

Windows 便携版用户可直接运行安装目录下的更新脚本。

update\update_comfyui.bat

为什么会这样

节点丢失或报错通常是因为 ComfyUI 核心版本迭代导致 API 契约变更。自 0.2.x 版本起,核心框架对节点生命周期契约实施严格化治理,例如 is_changed 函数签名从 def is_changed(self) 改为 def is_changed(self, **kwargs),return_types 由可选元组变为强制非空元组。旧版节点若未适配新签名,会被核心框架跳过注册,表现为节点消失或控制台抛出 ImportError。

分步处理

第一步是数据备份,防止升级过程中文件丢失或配置损坏。手动保存 channels.list 和 pip_overrides.json 等配置文件,导出当前已安装的节点列表,建议对 custom_nodes 和 input 文件夹创建完整快照。

如何从旧版本 ComfyUI 升级到最新版而不丢失自定义节点

第二步是核心框架更新。Git 用户执行 git pull 同步远程仓库代码,若遇到分支跟踪错误需显式设置上游分支。便携版用户运行 update_comfyui.bat 脚本,确保网络连接正常以下载最新文件。

第三步是自定义节点更新。进入 custom_nodes 目录,对每个节点文件夹执行 git pull origin main。若未使用 Git 安装节点,需删除旧版本后重新下载最新源码。使用 Manager 工具可批量检测并安装兼容版本的节点。

第四步是依赖环境修复。升级后重新安装依赖包以解决兼容性问题,执行 pip install -r requirements.txt `--upgrade`。若遇到 torch 或 transformers 版本冲突,需根据报错信息锁定特定版本。

怎么验证是否生效

启动 ComfyUI 后检查控制台日志,确认无 ModuleNotFoundError 或 AttributeError 报错。观察节点面板,确认 LayerDiffusion 等关键节点未呈灰色不可拖拽状态。加载示例工作流 layer_diffusion_cond_example.json 执行测试生成,确认无报错且图像生成正常。

若使用 Manager 工具,运行系统完整性检查命令 ./cm-cli.sh system check `--full` 验证所有功能正常运行。检查启动日志中的 ComfyUI version 字段,确认版本号已更新至预期版本。

常见坑

缓存残留是导致节点静默跳过的常见原因。__pycache__ 目录下的旧编译文件未更新,或 custom_nodes 目录下残留 .disabled 文件,会导致节点被静默跳过且日志无提示。升级前建议清理 __pycache__ 文件夹。

如何从旧版本 ComfyUI 升级到最新版而不丢失自定义节点

Python 环境冲突可能引发启动崩溃。ComfyUI 新版本可能锁定 torch>=2.3.0,而旧版节点依赖 torch==2.1.2,直接更新会导致版本回滚冲突。建议在独立虚拟环境中操作,避免与宿主系统 Python 库产生冲突。

网络问题会导致更新中断。大部分升级方法需要访问 GitHub 仓库,若网络环境不稳定可能导致代码拉取失败或依赖下载超时。建议确保网络通畅后再执行更新操作。

常见问题

更新后自定义节点消失怎么办?

检查控制台日志是否有 ImportError 或 API 签名不匹配报错。多数情况是节点未适配新版 ComfyUI 核心,需更新该节点到最新版本或暂时禁用。

便携版升级后配置丢失如何恢复?

从备份的 user 目录或 config 文件恢复配置。便携版更新通常不覆盖用户配置,但若手动替换文件可能导致丢失,需从预升级备份中还原 channels.list 等文件。

Git 更新提示分支落后如何处理?

执行 git branch `--set-upstream-to`=origin/master master 设置上游分支。随后执行 git reset `--hard` origin/master 确保本地代码与远程仓库同步。

依赖包更新导致环境崩溃如何修复?

使用 pip install -r requirements.txt `--force-reinstall` 强制重新安装依赖。若仍失败,建议重建虚拟环境并重新安装 ComfyUI 核心及节点。

参考来源

  • ComfyUI-layerdiffuse 版本更新指南:从旧版本平滑升级到最新版的方法
  • ComfyUI-Manager 升级指南:零风险平滑迁移方案-CSDN 博客
  • ComfyUI-Manager 升级终极指南:轻松解决节点兼容与配置迁移难题
  • [ComfyUI] 如何升级自定义节点 (Custom Nodes)
  • comfyui 如何更新 - 华为云
  • 【共绩 ComfyUI 小课堂】Class 3 ComfyUI 升级更新完整指南
  • 更新 ComfyUI 后节点丢失或报错,如何解决兼容性问题?
  • ComfyUI 更新后节点丢失或报错,如何安全升级?
  • ComfyUI 自动更新机制:版本升级与兼容性处理教程
  • ComfyUI 懒人手动升级实战:从 0.3.64 到 0.6.0 的成功之路