记一次 ComfyUI‑Desktop 自定义插件自动更新坑:启动无限安装依赖超时卡死

环境:ComfyUI‑Desktop 桌面版,Windows,无外网,.venv 虚拟环境

问题现象

某天手贱,通过 ComfyUI‑Manager 更新了一批自定义插件。更新完成后重启 ComfyUI‑Desktop,噩梦就来了。
启动界面一直转圈,日志疯狂打印插件更新、依赖安装相关日志,程序长时间卡在启动流程无法进入工作界面。
 
由于本地没有外网环境,访问 GitHub、api.comfy.org、国外 PyPI 源速度极慢,pip 安装依赖不停超时、重试。
 
现象就是:看起来程序在干活,但永远启动不完,ComfyUI 完全打不开,直接无法使用。
一开始我以为是虚拟环境缺少依赖包,导出完整 pip list 核对环境快照,所有插件需要的包版本全部齐全,不存在缺包。
 
修改 Manager 的配置文件 config.ini,把网络模式设置为离线、关闭自动安装、关闭自动更新。结果发现配置修改完完全无效,依旧在启动阶段执行插件更新与依赖安装逻辑。
ComfyUI‑Desktop UI 面板上的「管理器网络模式:离线」仅仅只限制管理器在线仓库查询,拦截不了预启动脚本的执行链路,这是非常容易踩坑的误区。

源码溯源:追踪自动安装调用链

折腾一两个小时,翻阅源码顺着启动链路层层回溯,终于定位到问题根源,整套自动安装、扩展激活逻辑不在普通节点加载流程,而是在prestartup 预启动脚本。
完整调用链:
  1. main.py 程序入口启动 → 第 223 行调用 comfyui_manager.prestartup()
  2. 加载虚拟环境内的管理器脚本:.venv/Lib/site-packages/comfyui_manager/prestartup_script.py
  3. 当存在 install‑scripts.txt 文件时,执行 execute_startup_script()(源码 L798‑L799)
  4. 脚本内部 L678 行输出日志,也就是我们日志里看到的 Updating:xxxInstallation reserved:
  5. 执行脚本内封装的整套逻辑:插件 git 更新、pip 依赖安装、节点启用 / 禁用、插件删除等一系列操作。
关键点:
 
install‑scripts.txt 是 Manager 更新插件之后生成的任务队列文件。
 
更新完插件之后,会把待执行任务写入这个文件,下一次 ComfyUI 启动,不管你管理器是否设置离线模式,预启动脚本都会读取这个文件,执行队列里面全部任务。
 
哪怕你设置离线模式、关闭 lazy_install,只要这个任务文件存在,启动就会执行更新 / 安装逻辑。国内网络环境下,访问外网超时,就造成启动假死。

解决办法

定位根源之后处理方案就非常简单:
  1. 完全退出 ComfyUI‑Desktop,任务管理器杀掉全部 Python、ComfyUI 相关进程。
  2. 找到任务队列文件:ComfyUI/user/__manager/install‑scripts.txt,直接删除这个文件。
  3. (可选加固)同步删除同目录下 cache 缓存文件夹,清除旧的插件注册表缓存。
  4. 重启 ComfyUI‑Desktop。
删除该任务文件后,预启动脚本没有待执行任务,不会再触发自动更新、自动 pip 安装,顺利完成启动进入界面。

踩坑总结

  1. ComfyUI‑Desktop 的管理器「离线模式」不能拦截 prestartup 预启动脚本任务队列,这是很多人调试很久找不到问题的关键点。离线仅控制运行时界面的网络查询,不拦截启动阶段的任务脚本。
  2. 插件更新任务保存在 install‑scripts.txt,只要这个文件存在,下一次开机一定会执行队列任务,网络差的环境直接启动卡死。
  3. 环境包齐全,不代表不会触发 pip,很多时候不是缺包,是脚本强制执行更新检查、git 拉取,网络超时造成假死。
  4. 遇到启动无限安装依赖,优先检查这个任务文件,不要上来就反复重装环境。
本次踩坑环境版本:ComfyUI‑Manager 4.2.2,ComfyUI‑Desktop,venv 虚拟环境。
posted @ 2026-08-08 15:02  风哀伤  阅读(70)  评论(0)    收藏  举报