快速结论:使用 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_ 和 DropPath 从 timm.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(与此问题无关,但常规要求)
解决步骤
- 打开文件:
custom_nodes/comfyui_controlnet_aux/src/custom_controlnet_aux/metric3d/mono/model/backbones/ConvNeXt.py - 找到原有导入语句(通常为
from timm.models.layers import trunc_normal_, DropPath) - 替换为兼容两种路径的 try/except 版本:
try: from timm.layers import trunc_normal_, DropPath except ImportError: from timm.models.layers import trunc_normal_, DropPath - 保存文件。
- 完全重启 ComfyUI(包括关闭终端/控制台进程)。
验证方法
重新加载 Metric3D-DepthMapPreprocessor 节点,确认不再弹出 ModuleNotFoundError,并能正常执行深度估计任务。如果仍报错,可检查 timm 版本,必要时降级到 0.8.x 或更早(但建议优先使用上述代码修改,以保持环境兼容性)。
参考来源
Fannovel16/comfyui_controlnet_aux #616
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


