
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_ 和 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 或更早(但建议优先使用上述代码修改,以保持环境兼容性)。

![[Bug][KV Offload]: `on_request_finished()` has inconsistent guarantees across offloading layers](https://www.chat-gpts.plus/wp-content/uploads/2026/06/46027-c3300fcd-768x403.jpg)

