AttributeError: ‘NoneType’ object has no attribute ‘patcher’

这个报错通常出现在 ComfyUI 的 IPAdapter 节点执行阶段,当代码尝试调用 clip_vision.patcher 时,传入的 clip_vision 实际是 None ,也就是 IPAdapter 节点没有拿到有效的 CLIP Vision 模型。优先检查节点上的 CLIP Visi

快速结论:这个报错通常出现在 ComfyUI 的 IPAdapter 节点执行阶段,当代码尝试调用 clip_vision.patcher 时,传入的 clip_vision 实际是 None,也就是 IPAdapter 节点没有拿到有效的 CLIP Vision 模型。优先检查节点上的 CLIP Vision 输入是否为空。

适用环境:Issue 中确认的环境为 Windows 下的 ComfyUI;涉及自定义节点为 IPAdapter-ComfyUI(路径显示为 custom_nodes/IPAdapter-ComfyUI)。Issue 讨论了升级 ComfyUI 和扩展,但未提供具体的 Python、PyTorch、CUDA 或显卡版本。

最快修复方案:更换为带 CLIP Vision 输入的 IPAdapter 节点,并为其接入 CLIP_VISION_H.SAFETENSOR 模型。这是该 Issue 中用户明确表示解决了自己同类报错的做法。

注意事项:“升级 ComfyUI 和扩展”在评论里被多次尝试但并未让所有用户恢复,因此不能视为可靠的一步修复。更换节点、补上 CLIP Vision 模型的做法属于社区经验,仍需在自己的工作流中确认节点类型与模型文件名匹配。Issue 中提到的 CLIP_VISION_H.SAFETENSOR 为大写写法,请以实际放到 ComfyUI CLIP Vision 模型目录中的文件名为准。

问题场景

用户在 ComfyUI 中运行 IPAdapter 相关节点时触发该异常。报错发生在 custom_nodes/IPAdapter-ComfyUI/ip_adapter.py 的 adapter 方法,进入 clip_vision_encode 后调用 comfy.model_management.load_model_gpu(clip_vision.patcher) 时报错。从代码路径看,问题不在图像编码本身,而是在把 clip_vision 交给模型管理加载之前就已经不是有效对象。

报错原文

ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
  File "D:\a\ComfyUI\ComfyUI\execution.py", line 153, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\a\ComfyUI\ComfyUI\execution.py", line 83, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\a\ComfyUI\ComfyUI\execution.py", line 76, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\a\ComfyUI\ComfyUI\custom_nodes\IPAdapter-ComfyUI\ip_adapter.py", line 162, in adapter
    cond, uncond, outputs = self.clip_vision_encode(clip_vision, image, self.plus)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\a\ComfyUI\ComfyUI\custom_nodes\IPAdapter-ComfyUI\ip_adapter.py", line 229, in clip_vision_encode
    comfy.model_management.load_model_gpu(clip_vision.patcher)
                                          ^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'patcher'

原因分析

最可能的原因是 IPAdapter 节点没有接收到有效的 CLIP Vision 模型,导致 clip_vision 为 None。当代码执行到 clip_vision.patcher 时,Python 尝试访问 None 的 patcher 属性,于是抛出 AttributeError: 'NoneType' object has no attribute 'patcher'。

另一种可能原因与节点类型或扩展版本有关:用户使用的节点可能不包含 CLIP Vision 输入,或者升级 ComfyUI 与 IPAdapter 扩展后工作流中的节点映射没有同步更新。Issue 评论中有人明确将解决方式归结为“更换带 CLIP Vision 的节点,并添加 CLIP_VISION_H.SAFETENSOR”,说明早期节点连接方式或模型加载方式与后续版本不完全兼容。

环境排查

  • 确认 ComfyUI 本体和 IPAdapter-ComfyUI 自定义节点均已更新到当前可用版本;Issue 中“升级两者”是常见建议,但不保证修复。
  • 确认 IPAdapter 节点上存在 CLIP Vision 输入,并且该输入已连接到实际的 CLIP Vision 模型节点。
  • 确认 CLIP Vision 模型文件已正确放置,Issue 中提到的加载文件为 CLIP_VISION_H.SAFETENSOR。
  • 确认当前工作流使用的 IPAdapter 节点类型与扩展安装后的节点类型一致,避免旧节点缓存或缺失输入口。
  • Issue 未提供 Python、PyTorch、CUDA、显卡型号等具体版本信息,这些项目在本 Issue 中无法进一步核对。

解决步骤

  1. 先彻底重启 ComfyUI,确保自定义节点和 ComfyUI 本体更新已生效。
  2. 检查当前 IPAdapter 节点是否包含 CLIP Vision 输入口。如果该节点没有 CLIP Vision 输入,替换为一个带 CLIP Vision 输入的 IPAdapter 节点。
  3. 为新的 IPAdapter 节点接入 CLIP_VISION_H.SAFETENSOR 模型,确保模型对象从加载节点传到 IPAdapter 节点。
  4. 如果替换节点、补齐 CLIP Vision 后仍报同样的 NoneType 错误,再尝试升级 ComfyUI 与 IPAdapter 扩展,并重新加载工作流。
  5. 执行一次简单工作流验证,确保报错不再出现在 clip_vision_encode 阶段。

验证方法

重新运行之前失败的工作流,观察控制台是否还出现 AttributeError: 'NoneType' object has no attribute 'patcher'。如果 IPAdapter 节点可以继续执行并输出条件或图像结果,且 clip_vision_encode 不再因 clip_vision 为空而中断,即可确认问题已经绕过或解决。

参考来源

cubiq/ComfyUI_IPAdapter_plus #63

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25961

发表回复

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