ModuleNotFoundError: No module named ‘timm’

在 ComfyUI 中加载 Metric3D-DepthMapPreprocessor 节点时触发崩溃,节点 ID 为 95。该节点尝试从 timm.models.layers 导入 trunc_normal_ 和 DropPath ,但新版 timm 已将这些模块移至 timm.layers ,导

ModuleNotFoundError: No module named 'timm'

ModuleNotFoundError: No module named ‘timm’

快速结论:使用 ComfyUI ControlNet Aux 的 Metric3D-DepthMapPreprocessor 节点时,因代码导入路径在新版 timm 中变更导致报错;优先检查 timm 版本并修改代码中 import 路径。

问题场景

在 ComfyUI 中加载 Metric3D-DepthMapPreprocessor 节点时触发崩溃,节点 ID 为 95。该节点尝试从 timm.models.layers 导入 trunc_normal_DropPath,但新版 timm 已将这些模块移至 timm.layers,导致导入失败。

报错原文

ModuleNotFoundError: No module named 'timm'

  File "C:\Users\User\Documents\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_controlnet_aux\metric3d\mono\model\backbones\__init__.py", line 1, in <module>
    from .ConvNeXt import convnext_xlarge

原因分析

timm 库在较新版本(如 0.9.x 及以上)中将 trunc_normal_DropPathtimm.models.layers 迁移到了 timm.layers。comfyui_controlnet_aux 中的 Metric3D 子模块代码 ConvNeXt.py 硬编码了旧导入路径,未兼容新版路径,因此在新版 timm 环境中报错。这并非用户环境配置错误,而是上游代码未及时适配。

环境排查

  • timm 版本:确认是否安装了较新版本(如 0.9.x 或更高)
  • comfyui_controlnet_aux 版本:确认是否为最新提交(Issue 提出时尚未合入修复)
  • Python 版本:建议 Python 3.10 或 3.11(与此问题无关,但常规要求)

解决步骤

  1. 打开文件:custom_nodes/comfyui_controlnet_aux/src/custom_controlnet_aux/metric3d/mono/model/backbones/ConvNeXt.py
  2. 找到原有导入语句(通常为 from timm.models.layers import trunc_normal_, DropPath
  3. 替换为兼容两种路径的 try/except 版本:
    try:
        from timm.layers import trunc_normal_, DropPath
    except ImportError:
        from timm.models.layers import trunc_normal_, DropPath
  4. 保存文件。
  5. 完全重启 ComfyUI(包括关闭终端/控制台进程)。

验证方法

重新加载 Metric3D-DepthMapPreprocessor 节点,确认不再弹出 ModuleNotFoundError,并能正常执行深度估计任务。如果仍报错,可检查 timm 版本,必要时降级到 0.8.x 或更早(但建议优先使用上述代码修改,以保持环境兼容性)。

参考来源

Fannovel16/comfyui_controlnet_aux #616

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 9715

发表回复

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