
AttributeError: ‘ModuleList’ object has no attribute ‘1’
快速结论:此错误通常发生在使用 ControlNet 时,因加载了错误的模型(例如 SDXL 的 ControlNet 但在 SD1.5 模型上使用)导致。优先排查是否在配置中误选了不匹配的 ControlNet 类型。
问题场景
当用户运行 ComfyUI IPAdapter Plus 或标准 ComfyUI 工作流,并使用 KSampler、KSamplerAdvanced、Efficiency Node 等采样节点时,触发该错误。错误发生在 ControlNet 的 pre_run 阶段,原因与 ControlNet 模型类型不匹配有关。
报错原文
AttributeError: 'ModuleList' object has no attribute '1'
File "D:\Projects\ComfyUI_windows_portable\ComfyUI\comfy\utils.py", line 264, in set_attr
obj = getattr(obj, name)
File "D:\Projects\ComfyUI_windows_portable\ComfyUI\python_embeded\lib\site-packages\torch\nn\modules\module.py", line 1614, in __getattr__
raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'ModuleList' object has no attribute '1'
原因分析
可能原因是用户将不兼容的 ControlNet 模型(例如用于 SDXL 的 ControlNet)应用于错误的基础模型上。在 Issue 评论中,作者提到:“I forgot to set the controlnet and the default was a SDXL controlnet”,说明默认加载了 SDXL 的 ControlNet,但用户可能在 SD1.5 或其他模型上运行,导致 ControlNet 内部模型结构(ModuleList)尝试访问不存在的属性 ‘1’,从而引发 AttributeError。这通常是 ComfyUI 内置 ControlNet 加载逻辑的验证问题。
环境排查
- 检查正在使用的基础模型是 SD1.5、SD2.1 还是 SDXL。
- 确认 ControlNet 模型文件名称或配置中的版本是否匹配基础模型。
- 检查 ComfyUI 版本是否为更新版本(部分旧版本可能有 bug,但此问题更多与模型选择相关)。
- 检查是否有其他自定义节点(如 Efficiency Nodes、Impact Pack)影响采样流程。
解决步骤
- 在 ComfyUI 工作流中,找到 ControlNet 节点(通常为 Load ControlNet Model 或 Apply ControlNet 节点)。
- 检查所加载的 ControlNet 模型文件。确保它不是 SDXL 专用的 ControlNet(例如文件名称带 “xl” 字样),除非你正在使用 SDXL 基础模型。
- 如果你的基础模型是 SD1.5(如 v1-5-pruned-emaonly),请加载对应的 SD1.5 风格 ControlNet(如 control_v11p_sd15_canny)。
- 若不确定,尝试禁用 ControlNet 相关节点,重新运行工作流。如果不再报错,则确认是 ControlNet 模型不兼容问题。
- 如果你是 ComfyUI IPAdapter Plus 用户,请检查是否有类似 ControlNet 的配置项,确保默认加载的 ControlNet 没有误设为 SDXL 版本。可优先尝试在设置中明确指定正确的 ControlNet 类型。
验证方法
成功加载与基础模型兼容的 ControlNet 后,重新运行相同工作流。如果不再出现 “Element ‘1’ object has no attribute” 错误,且采样正常进行,则问题已解决。



