快速结论:在 ComfyUI 里运行 Metric3D-DepthMapPreprocessor 节点时,底层 Metric3D 代码导入 timm 失败会抛出 ModuleNotFoundError: No module named 'timm',优先排查 comfyui_controlnet_aux 自带的 Metric3D 骨干代码与当前 timm 版本是否兼容。
适用环境:Issue 中可确认的环境为 Windows,ComfyUI 位于 C:\Users\User\tools\ComfyUI,自定义节点位于 C:\Users\User\Documents\ComfyUI\custom_nodes\comfyui_controlnet_aux;Issue 未提供 Python、CUDA、PyTorch、显卡型号或 timm 具体版本号。
最快修复方案:暂无确认的一步修复方案。Issue 中提出的方案是修改 custom_nodes/comfyui_controlnet_aux/src/custom_controlnet_aux/metric3d/mono/model/backbones/ConvNeXt.py,把 timm 的导入改为兼容写法后重启 ComfyUI,但提交者本人未验证。
注意事项:该改法属于可优先尝试的推测性修复,Issue 报告者表示已搁置项目、无法亲自验证;修改第三方自定义节点源码可能在后续更新时被覆盖,动手前建议备份原文件。
问题场景
用户在 ComfyUI 中运行 Metric3D-DepthMapPreprocessor 节点(Node ID 95)时触发报错。该节点属于 comfyui_controlnet_aux 自定义节点,执行时会加载 Metric3D 的深度估计模型,在构建模型阶段导入 ViT/ConvNeXt 相关骨干代码失败。
报错原文
ModuleNotFoundError: No module named 'timm'
File "C:\Users\User\Documents\ComfyUI\custom_nodes\comfyui_controlnet_aux\node_wrappers\metric3d.py", line 26, in execute
model = Metric3DDetector.from_pretrained(filename=f"metric_depth_{backbone.replace('-', '_')}_800k.pth").to(model_management.get_torch_device())
File "...\src\custom_controlnet_aux\metric3d\mono\model\backbones\__init__.py", line 1, in <module>
from .ConvNeXt import convnext_xlarge
...
原因分析
报错发生在 Metric3D 模型初始化阶段,导入骨干网络时依赖 timm。Issue 评论中给出的方向是:把 timm.models.layer 中的 trunc_normal_, DropPath 改为从 timm.layers 导入。这说明可能原因是 comfyui_controlnet_aux 内置的 Metric3D 代码使用了旧版 timm 的导入路径,而当前环境中的 timm 版本已经不提供该路径,导致导入链断裂并最终以 No module named 'timm' 的形式抛出。由于 Issue 未给出实际 timm 版本,这一点属于可能原因,需要按环境排查确认。
环境排查
- 确认当前 ComfyUI 使用的 Python 环境中是否安装了 timm,以及安装的版本号。
- 确认 ComfyUI 启动时使用的 Python 解释器与安装依赖的环境是否一致,避免装到了另一个环境。
- 确认
comfyui_controlnet_aux是否为可更新的较新版本,检查其 requirements 是否包含 timm。 - 确认
src/custom_controlnet_aux/metric3d/mono/model/backbones/ConvNeXt.py当前的 timm 导入语句写法。 - Issue 未提供 Python、CUDA、PyTorch、显卡型号,暂不作为判断依据。
解决步骤
- 先确认 timm 是否已安装:在 ComfyUI 对应环境中检查
python -c "import timm; print(timm.__version__)"。 - 如果未安装 timm,可优先尝试在 ComfyUI 使用的同一 Python 环境中安装 timm,然后重启 ComfyUI。
- 如果已安装但依然报错,按 Issue 评论建议编辑
custom_nodes/comfyui_controlnet_aux/src/custom_controlnet_aux/metric3d/mono/model/backbones/ConvNeXt.py,将导入改为兼容写法:
try:
from timm.layers import trunc_normal_, DropPath
except ImportError:
from timm.models.layers import trunc_normal_, DropPath
- 保存文件后重启 ComfyUI,让修改生效。
- 如果该导入路径仍然失败,检查同目录或其他 Metric3D 文件中是否还有其它使用旧 timm 导入路径的位置,一并按同样方式处理。
验证方法
重启 ComfyUI 后再次运行 Metric3D-DepthMapPreprocessor 节点。如果不再出现 ModuleNotFoundError: No module named 'timm',且节点能正常输出深度图,说明问题已解决。若报错变为其它导入错误,说明还有其它 timm 旧路径需要处理。
参考来源
Fannovel16/comfyui_controlnet_aux #616
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Help] "No data found" error when training model – train_data_dir issue](https://www.chat-gpts.plus/wp-content/uploads/2026/09/3374-c5ab074b-768x403.jpg)

