快速结论:这个报错通常出现在 ComfyUI 使用 ControlNet 采样时,原因是 ControlNet 模型与当前主模型(Checkpoint)不匹配,最典型的是把 SDXL 的 ControlNet 配到了 SD1.5 主模型(或反过来)。优先检查 ControlNet 加载器里选用的模型是否与主模型配套。
适用环境:Issue 已确认的环境为 Windows、ComfyUI Windows 便携版(ComfyUI_windows_portable),涉及 ComfyUI 自带采样节点(KSampler / KSamplerAdvanced)以及 efficiency-nodes-comfyui、ComfyUI-Impact-Pack 等自定义节点。Issue 未提供具体 Python、PyTorch、CUDA 或显卡版本。
最快修复方案:Issue 发起者确认,自己忘记设置 ControlNet,默认加载了一个 SDXL ControlNet,改用与主模型匹配的 ControlNet 后问题消失。可优先尝试:在 ControlNet 加载器节点中明确选择与当前 Checkpoint 对应的 ControlNet 模型。
注意事项:该结论来自提问者自述,并非维护者发布的通用修复说明。其他评论者反馈“same error”,说明存在其他触发路径;如果更换 ControlNet 后仍报错,需要继续排查节点连接、自定义节点及依赖版本,不要把它当成万能修复。
问题场景
用户在 ComfyUI 中运行带 ControlNet 的工作流时触发报错,提问者提到是在尝试使用 canny 示例(canny example)时出现。评论中其他用户分别在 KSamplerAdvanced、KSampler (Efficient)(efficiency-nodes-comfyui)等采样节点上遇到同一个 AttributeError,说明报错发生在采样阶段而非某个特定 UI 节点。
报错原文
!!! Exception during processing !!!
AttributeError: 'ModuleList' object has no attribute '1'
Error occurred when executing KSamplerAdvanced:
'ModuleList' object has no attribute '1'
Error occurred when executing KSampler (Efficient):
'ModuleList' object has no attribute '1'
原因分析
从堆栈看,异常发生在 ComfyUI 加载并应用 ControlNet 权重时(comfy/controlnet.py 的 pre_run,经由 comfy/utils.py 的 set_attr 逐层 getattr),最终落到 PyTorch 模块属性查找失败。最可能的原因是当前 ControlNet 模型的结构与主模型/ControlNet 应用方式不匹配,导致代码按预期路径去取子模块(如名为 “1” 的层)时取不到,于是抛出 AttributeError。
Issue 中提问者给出的直接原因是:忘记设置 ControlNet,默认使用了一个 SDXL ControlNet,而主模型与其不配套。因此“ControlNet 与主模型代际不匹配”是本次 Issue 中最有证据支持的触发条件。需要说明的是,多位用户复现同一报错,具体到每个人的模型组合可能不同,其他原因尚未在 Issue 中确认。
环境排查
- 确认当前 Checkpoint 主模型是 SD1.5 还是 SDXL。
- 确认 ControlNet 加载器节点中实际选中的 ControlNet 模型是否与主模型属于同一代际。
- 确认 ControlNet 加载器节点是否正确接入采样节点的 positive/negative 与模型输入,而不是走默认或残留配置。
- 确认是否同时使用了 efficiency-nodes-comfyui、ComfyUI-Impact-Pack 等自定义节点;Issue 中出现这些节点,但它们是否参与触发未确认。
- Issue 未提供 Python、PyTorch、CUDA、显卡版本,这些项目的版本兼容性无法据此判断。
解决步骤
- 先打开工作流中的 ControlNet 加载器节点,确认它使用的 ControlNet 模型文件。
- 对照主模型检查:SD1.5 主模型应配 SD1.5 的 ControlNet,SDXL 主模型应配 SDXL 的 ControlNet,不要混用。
- 如果当前选中的是 SDXL ControlNet,而主模型是 SD1.5(或相反),更换为匹配的 ControlNet 模型后重跑工作流。
- 如果加载器有默认值,显式手动选择一次目标 ControlNet,避免沿用默认模型。
- 若更换后仍报同样的 AttributeError,再逐步排查 ControlNet 节点的连接方式以及自定义节点(如 efficiency-nodes、Impact-Pack)的加载情况。
验证方法
重新执行同一个工作流,采样阶段不再抛出 AttributeError: 'ModuleList' object has no attribute '1',KSampler / KSamplerAdvanced 能正常完成出图,即可认为该触发点已排除。若仍报同一错误,说明当前工作流里还存在其他不匹配的 ControlNet 或节点配置。
参考来源
cubiq/ComfyUI_IPAdapter_plus #8
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


