记一次 ComfyUI‑Desktop 自定义插件自动更新坑:启动无限安装依赖超时卡死
环境:ComfyUI‑Desktop 桌面版,Windows,无外网,.venv 虚拟环境
问题现象
某天手贱,通过 ComfyUI‑Manager 更新了一批自定义插件。更新完成后重启 ComfyUI‑Desktop,噩梦就来了。
启动界面一直转圈,日志疯狂打印插件更新、依赖安装相关日志,程序长时间卡在启动流程无法进入工作界面。
由于本地没有外网环境,访问 GitHub、
现象就是:看起来程序在干活,但永远启动不完,ComfyUI 完全打不开,直接无法使用。
api.comfy.org、国外 PyPI 源速度极慢,pip 安装依赖不停超时、重试。
一开始我以为是虚拟环境缺少依赖包,导出完整
修改 Manager 的配置文件
pip list 核对环境快照,所有插件需要的包版本全部齐全,不存在缺包。
config.ini,把网络模式设置为离线、关闭自动安装、关闭自动更新。结果发现配置修改完完全无效,依旧在启动阶段执行插件更新与依赖安装逻辑。ComfyUI‑Desktop UI 面板上的「管理器网络模式:离线」仅仅只限制管理器在线仓库查询,拦截不了预启动脚本的执行链路,这是非常容易踩坑的误区。
源码溯源:追踪自动安装调用链
折腾一两个小时,翻阅源码顺着启动链路层层回溯,终于定位到问题根源,整套自动安装、扩展激活逻辑不在普通节点加载流程,而是在prestartup 预启动脚本。
完整调用链:
main.py程序入口启动 → 第 223 行调用comfyui_manager.prestartup()- 加载虚拟环境内的管理器脚本:
.venv/Lib/site-packages/comfyui_manager/prestartup_script.py - 当存在
install‑scripts.txt文件时,执行execute_startup_script()(源码 L798‑L799) - 脚本内部 L678 行输出日志,也就是我们日志里看到的
Updating:xxx、Installation reserved: - 执行脚本内封装的整套逻辑:插件 git 更新、pip 依赖安装、节点启用 / 禁用、插件删除等一系列操作。
关键点:install‑scripts.txt是 Manager 更新插件之后生成的任务队列文件。更新完插件之后,会把待执行任务写入这个文件,下一次 ComfyUI 启动,不管你管理器是否设置离线模式,预启动脚本都会读取这个文件,执行队列里面全部任务。哪怕你设置离线模式、关闭 lazy_install,只要这个任务文件存在,启动就会执行更新 / 安装逻辑。国内网络环境下,访问外网超时,就造成启动假死。
解决办法
定位根源之后处理方案就非常简单:
- 完全退出 ComfyUI‑Desktop,任务管理器杀掉全部 Python、ComfyUI 相关进程。
- 找到任务队列文件:
ComfyUI/user/__manager/install‑scripts.txt,直接删除这个文件。 - (可选加固)同步删除同目录下 cache 缓存文件夹,清除旧的插件注册表缓存。
- 重启 ComfyUI‑Desktop。
删除该任务文件后,预启动脚本没有待执行任务,不会再触发自动更新、自动 pip 安装,顺利完成启动进入界面。
踩坑总结
- ComfyUI‑Desktop 的管理器「离线模式」不能拦截 prestartup 预启动脚本任务队列,这是很多人调试很久找不到问题的关键点。离线仅控制运行时界面的网络查询,不拦截启动阶段的任务脚本。
- 插件更新任务保存在
install‑scripts.txt,只要这个文件存在,下一次开机一定会执行队列任务,网络差的环境直接启动卡死。 - 环境包齐全,不代表不会触发 pip,很多时候不是缺包,是脚本强制执行更新检查、git 拉取,网络超时造成假死。
- 遇到启动无限安装依赖,优先检查这个任务文件,不要上来就反复重装环境。
本次踩坑环境版本:ComfyUI‑Manager 4.2.2,ComfyUI‑Desktop,venv 虚拟环境。

浙公网安备 33010602011771号