AttributeError: ‘ModuleList’ object has no attribute ‘1’

这个报错通常出现在 ComfyUI 使用 ControlNet 采样时,原因是 ControlNet 模型与当前主模型(Checkpoint)不匹配,最典型的是把 SDXL 的 ControlNet 配到了 SD1.5 主模型(或反过来)。优先检查 ControlNet 加载器里选用的模型是否与主模

快速结论:这个报错通常出现在 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、显卡版本,这些项目的版本兼容性无法据此判断。

解决步骤

  1. 先打开工作流中的 ControlNet 加载器节点,确认它使用的 ControlNet 模型文件。
  2. 对照主模型检查:SD1.5 主模型应配 SD1.5 的 ControlNet,SDXL 主模型应配 SDXL 的 ControlNet,不要混用。
  3. 如果当前选中的是 SDXL ControlNet,而主模型是 SD1.5(或相反),更换为匹配的 ControlNet 模型后重跑工作流。
  4. 如果加载器有默认值,显式手动选择一次目标 ControlNet,避免沿用默认模型。
  5. 若更换后仍报同样的 AttributeError,再逐步排查 ControlNet 节点的连接方式以及自定义节点(如 efficiency-nodes、Impact-Pack)的加载情况。

验证方法

重新执行同一个工作流,采样阶段不再抛出 AttributeError: 'ModuleList' object has no attribute '1',KSampler / KSamplerAdvanced 能正常完成出图,即可认为该触发点已排除。若仍报同一错误,说明当前工作流里还存在其他不匹配的 ControlNet 或节点配置。

参考来源

cubiq/ComfyUI_IPAdapter_plus #8

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25754

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注