在 ComfyUI 里跑 DepthAnythingV3 插件时如果启动日志里出现No module named e3nn这行红字说明你踩上了这个插件最典型的依赖缺失问题。别慌也先别急着怀疑显卡驱动、CUDA 装错了这个报错 90% 的情况只有一个原因——e3nn这个 Python 库没有装进 ComfyUI 真正使用的 Python 环境里。这篇指南我从问题根源讲起给你三种可落地的安装方案再把我在实操中踩过的坑和排查思路整理成一份速查清单。适合刚接触 ComfyUI 的新手也适合被依赖问题搞到头大的老手直接抄作业。1. 先看懂这个报错e3nn 缺失到底卡在哪一步1.1 报错长什么样、什么时候会冒出来e3nn缺失的报错通常出现两种场景表现完全不同但本质是同一个问题。第一种场景是 ComfyUI 启动时插件加载失败。你在custom_nodes文件夹里放好了ComfyUI-DepthAnythingV3插件重启 ComfyUI发现节点列表里根本没有 DepthAnythingV3 的节点或者节点显示成醒目的红色。打开控制台日志会看到类似这样的内容Import times for custom nodes: 0.0 seconds ERROR: ComfyUI-DepthAnythingV3 Traceback (most recent call last): File E:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-DepthAnythingV3\node.py, line 1, in module from e3nn import o3 ModuleNotFoundError: No module named e3nn第二种场景是启动时一切正常但你把 DepthAnythingV3 节点拖到画布上或第一次运行 workflow 时突然报错。这种情况更迷惑因为很多人会以为是模型下载失败或者显存不够兜了一圈才发现日志里写着ModuleNotFoundError: No module named e3nn。不管是哪种报错信息本身已经说得很清楚了Python 解释器在导入e3nn这个库的时候在当前的模块搜索路径里找不到它。也就是说你需要的不是重装插件、不是换显卡驱动而是把缺失的这个依赖装对地方。1.2 e3nn 是什么DepthAnythingV3 为什么非要用它e3nn全称是Equivariant Neural Networks等变神经网络的 Python 库底层基于 PyTorch 构建专门用来处理对三维空间旋转、平移等变换具有对称性的神经网络。这个概念听起来玄我用一个生活化的类比来解释。你让普通神经网络去识别图片里的杯子如果训练数据里杯子都是竖着的那模型看到横着的杯子就可能认不出来因为它脑子里没有“杯子转个方向还是杯子”这个常识。而e3nn这类等变网络不一样它在网络结构层面就内置了旋转对称性相当于模型在数学层面就知道物体旋转后本质不变不需要靠大量数据硬学出来。DepthAnythingV3 之所以依赖e3nn是因为它在架构设计上比 V2 多了一个关键模块旋转等变的 MLP 层。这个模块让深度估计模型在处理不同视角、不同姿态的输入时能更稳定地推断出准确的深度信息。也就是说e3nn不是 ComfyUI 自带的也不是 DepthAnything 系列在网上分享传播时的临时依赖它是 V3 模型网络结构的一部分躲不开必须装。1.3 大部分装不上的真凶环境错位我在各种技术社区里帮人排查这个问题时发现真正装不上e3nn的情况极少。绝大多数人失败的原因是他们把依赖装到了另一个 Python 环境里。ComfyUI 的安装方式五花八门。官方 Windows 便携包自带了一套完整的 Python 运行时路径通常在ComfyUI_windows_portable\python_embeded\下面。也就是说你双击run_nvidia_gpu.bat启动 ComfyUI 时它用的是python_embeded\python.exe这个解释器而不是你系统PATH里的那个 Python。问题就出在这里。很多人手动安装插件后看到 README 说需要pip install e3nn就直接在命令行里敲了一串命令。结果命令执行时用的是系统 Python包倒是装上了但装进了C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\Lib\site-packages之类的目录。ComfyUI 运行时用的python_embeded根本不会去那个目录找包于是启动时照样报ModuleNotFoundError。这一节的结论很明确排查这个报错的第一优先事项不是装包是搞清楚你要往哪个环境里装。2. 动手前先对齐版本三件套一个都不能错2.1 先确认 PyTorch 和 CUDA 的底细e3nn不是独立运行的库它跑在 PyTorch 之上。PyTorch 版本决定了e3nn能否正常工作。我见过不少用户装好了e3nn结果启动时冒出AttributeError: module torch has no attribute xxx之类的报错这通常就是 PyTorch 版本太老。所以安装e3nn前先确认目标 Python 环境里的 PyTorch 情况。假如你已经确认了 ComfyUI 用的是python_embeded在命令行里运行E:\ComfyUI_windows_portable\python_embeded\python.exe -c import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available())如果输出类似2.1.2 12.1 True说明 PyTorch 是 2.x 版本CUDA 也是正常可用的那e3nn装新版本基本没问题。如果输出是1.12.1 11.3 True这种老版本我建议先把 PyTorch 升级到 2.x 再考虑装e3nn否则后面大概率会撞上算子兼容性问题。如果你之前根本没用python_embeded装过任何包运行这个命令会直接报No module named torch——这也很正常因为 ComfyUI 便携版内置的 Python 环境是精简过的需要你自己补装依赖。2.2 e3nn 版本选择和它的隐形依赖e3nn目前稳定版本主线在0.5.x上最新到0.5.1左右。从个人使用经验看优先安装 PyPI 上的最新稳定版用0.5.1或更高即可。网上有些教程会让人去 GitHub 装 master 分支非特殊情况我不推荐master 分支可能带新特性但也可能引入尚未稳定的问题。e3nn安装时还会自动带上几个依赖其中比较关键的是opt_einsum这是一个张量缩并优化库。e3nn大量使用张量积运算opt_einsum能自动选择最优的运算路径明显提升运行效率。好在这类依赖通常随着pip install e3nn自动解决不需要手动一个个装。有一点需要注意e3nn对 PyTorch 的版本下限有要求太旧的 PyTorch比如 1.8 以下可能直接无法安装或运行。在我实操过的组合里PyTorch 2.x Python 3.10/3.11 e3nn 0.5.1 这套组合非常稳基本没有出过兼容性问题。2.3 三种 ComfyUI 安装方式对应不同的处理路径搞清楚版本还不够你还得知道自己用的 ComfyUI 是哪种安装方式。我整理了一张速查表供你对照着确认ComfyUI 安装方式Python 解释器位置依赖安装目标Windows 官方便携包ComfyUI_windows_portable\python_embeded\python.exe用这个解释器执行pip install通过git clone手动部署看你是用系统 Python、conda 还是 venv 启动的用启动 ComfyUI 的那个 Python 环境的 pip通过 Pinokio 或其他一键安装器通常在安装器生成的独立环境内找安装器对应的 Python 路径或使用安装器提供的终端一句话总结ComfyUI 用哪个 Python 解释器就把依赖装到哪个解释器里。这是解决依赖缺失问题的不变法则。只要抓住这个原则后面所有操作都顺理成章。3. 实操三种安装姿势按场景对号入座3.1 方案 A便携版内置 Python 安装Windows 最常见大多数踩坑的读者用的都是 Windows 便携版所以我先讲这个场景。假设你的 ComfyUI 解压在E:\ComfyUI_windows_portable\目录下打开命令行CMD 或 PowerShell 都行先进入目录cd /d E:\ComfyUI_windows_portable然后直接用内置 Python 执行 pip 安装.\python_embeded\python.exe -m pip install e3nn这里用了-m pip而不是直接pip好处是能确保调用的是python_embeded里捆绑的 pip而不是系统 PATH 上不知哪个环境的 pip。装完后再用下面这行验证一下.\python_embeded\python.exe -c import e3nn; print(e3nn.__version__)正常情况下会打印出类似0.5.1的版本号。确认无误后重启 ComfyUIDepthAnythingV3 节点就能正常加载了。如果在执行过程中提示 pip 版本太旧可以先升级 pip.\python_embeded\python.exe -m pip install --upgrade pip这个方案简单直接适合绝大多数便携包用户。3.2 方案 B确认系统 Python 环境后安装如果你不是用便携包而是用系统安装的 Python 或git clone venv 的方式部署 ComfyUI那就要先搞清楚解释器位置再安装。在命令行里执行where pythonWindows 会列出 PATH 中找到的 Python 路径。如果你启动 ComfyUI 用的就是其中某一个用python -m pip install e3nn即可。如果你用了 venv 环境那要先激活虚拟环境再安装venv\Scripts\activate pip install e3nn这里有个很常见的坑where python可能会列出多个 Python但你并不确定 ComfyUI 用的是哪个。稳妥的做法是看一下 ComfyUI 的日志通常在启动输出的开头部分会打印 Python 版本和路径比如Python version: 3.11.6 (tags/v3.11.6:8f19868, Oct 2 2023, 14:02:18) [MSC v.1935 64 bit (AMD64)]看到这个之后你就知道应该用哪个环境了。如果 ComfyUI 的启动脚本里写死了某个 Python 路径以那个路径为准不要凭感觉猜。3.3 方案 C用 Conda 重建一个干净环境推荐给重装用户如果你还没装 ComfyUI或者正打算从零开始手动用 Conda 创建独立环境是最舒服的路径。这能避免系统 Python 和 ComfyUI 环境互相污染。先创建环境并指定 Python 版本我实测 3.11 和 3.10 都比较稳conda create -n comfyui python3.11 conda activate comfyui然后按顺序装 PyTorch以 CUDA 11.8 为例具体版本到 PyTorch 官网查安装命令和 e3nnpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install e3nn装完后在同一个comfyui环境里启动 ComfyUI 主程序即可。这个方案的隔离性最好之后不管装什么插件、补什么依赖都是在独立环境里操作不会污染系统的 Python也不怕 A 插件的依赖把 B 插件搞崩。3.4 装完后的验证怎么确保这次真的生效了很多人都栽在装完了但还是报错这一步。我建议你装完不要急着直接重启 ComfyUI先在命令行里做三步验证。第一步确认环境里能看到e3nnpython -c import e3nn; print(e3nn.__version__)第二步确认这个 Python 和 ComfyUI 启动用的是同一个。一个最笨但实用的方法在同一个命令行里执行python -c import sys; print(sys.executable)这个命令会打印出当前解释器的绝对路径。你把这个路径和 ComfyUI 日志开头打印的 Python 路径对一下完全一致才算数。第三步去插件目录里检查一下入口文件确认导入逻辑确实是从e3nn开始。通常打开custom_nodes\ComfyUI-DepthAnythingV3\下的node.py或__init__.py能看到from e3nn import o3之类的导入语句。这说明报错确实来自这个依赖只要库装对问题就解决。都确认没问题后重启 ComfyUI节点列表里 DepthAnythingV3 的节点会正常显示不再报错。4. 我在实操里踩过的坑以及对应的排查清单4.1 pip 找不到 e3nn 或下载超时有些使用默认 PyPI 源的用户会遇到安装超时或者提示No matching distribution found for e3nn。这种情况大概率是网络问题不是没有这个包。解决方式很简单换国内镜像源pip install e3nn -i https://pypi.tuna.tsinghua.edu.cn/simple如果嫌每次都要带源地址可以直接把镜像源写进 pip 配置一劳永逸pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple我私人在国内开发机上的常用配置就是清华源稳定性和速度都够用。4.2 e3nn 装好了ComfyUI 启动还是报错这是最常见的二次踩坑原因八成是装到了别的环境。我给出的一套快速排查法第一步看e3nn到底装到了哪个路径pip show e3nn观察输出里的Location字段。如果这个路径和 ComfyUI 解释器的site-packages路径对不上那就是装错环境需要重新装。比如我用python_embeded安装后Location应该在E:\ComfyUI_windows_portable\python_embeded\Lib\site-packages下。第二步把 ComfyUI 日志开头的 Python 路径和pip show里解释器路径对比。如果日志显示用的是python_embeded\python.exe而你pip show e3nn显示的是系统 Python 路径那问题一目了然。一个辅助技巧直接在 ComfyUI 启动日志里搜e3nn如果报错信息后面跟着一串模块搜索路径sys.path列表你就能看到 Python 到底去哪些目录找包。把e3nn实际安装的目录和这个列表对比缺哪里补哪里。4.3 e3nn 与 torch 版本不兼容引发的导入报错有一种情况是e3nn能装上但 import 时直接崩溃报错涉及torch.Tensor、register_buffer之类的字眼。这大概率是 torch 版本太旧不满足e3nn的版本要求。e3nn0.5.x 系列对 PyTorch 2.0 以上支持得比较好。如果你的环境里 torch 是 1.x 甚至更老的别纠结直接升级 torchpip install --upgrade torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118升级完再试一次import e3nn基本就通了。这里提醒一句升级 torch 之前最好把 ComfyUI 主体和重要节点插件检查一遍确认它们对高版本 torch 兼容。目前主流的 ComfyUI 版本和大部分插件都适配 torch 2.x风险不大。4.4 离线机器怎么装打包 wheel 大法有些人的工作机是内网环境根本连不上外网。这种场景下pip install e3nn是永远不可能成功的但也不是没救。在有网的另一台机器上用pip download把e3nn及其所有依赖打包到本地文件夹pip download e3nn -d e3nn_packages然后把这个e3nn_packages文件夹拷贝到目标离线机器上执行本地安装pip install --no-index --find-links./e3nn_packages e3nn如果离线机器的 Python 版本、操作系统架构和下载时完全一致这个方案基本能顺利跑完。跨平台的话比如在 Windows 上下载、在 Linux 上装多半会有 wheel 不匹配的问题那就在目标系统上用对应的平台重新下载一次。我个人的经验是离线安装的坑往往不在e3nn本身而在它的依赖链上——opt_einsum、numpy、scipy这些都可能有平台相关的 wheel。所以下载时一定要把整个依赖树都抓下来别只下载一个e3nn包。如果你不是必须用e3nn最新版还有一种退路在安装命令里指定老版本比如pip install e3nn0.4.2有时候反而能绕开某些依赖版本冲突。但这是退而求其次的招能不降级就不降级。5. 顺手解决的其他依赖问题把环境维护成习惯前面解决的是e3nn但 ComfyUI 插件的依赖问题远不止这一种。DepthAnythingV3 除了e3nn还可能会要求装einops、timm、tqdm之类的常用库其他插件更是各有各的依赖。与其每次报错再装不如从一开始就养成环境检查的习惯。我习惯在 ComfyUI 根目录下放一个check_env.py里面写几行检查关键依赖的代码方便每次扩容插件前先跑一遍。这里分享给你import sys import importlib required [torch, torchvision, e3nn, einops, timm, numpy, PIL] print(Python executable:, sys.executable) for name in required: try: mod importlib.import_module(name) print(f[OK] {name} {getattr(mod, __version__, unknown)}) except ImportError: print(f[MISSING] {name})在命令行里执行.\python_embeded\python.exe check_env.py输出里[MISSING]的库就是你下个安装任务的目标。这样一来我基本不用等插件报错提前就能发现环境里缺什么。另一个值得养成的习惯是安装任何插件前先看它的requirements.txt.\python_embeded\python.exe -m pip install -r custom_nodes\插件名\requirements.txt很多插件作者把依赖写进了requirements.txt但 ComfyUI 默认并不自动为每个节点插件装依赖所以你往往需要手动执行这条命令。我在给各种插件排查问题时发现至少一半的报错都是因为这个requirements.txt没被安装导致的。还有一点容易忽略装完依赖后ComfyUI 如果还在后台运行你是看不到效果的。必须完全关闭 ComfyUI 再重新启动所有 import 动作才会基于新环境重新执行。我见过几次用户安装完一直不重启结果还来问我为什么没效果其实关了重开就好。最后说点个人体会。我最早遇到这个e3nn报错时折腾了一个晚上先后怀疑过显卡驱动、CUDA 版本、模型文件完整性最后才发现是装到了系统的 Python 里而 ComfyUI 用的内置 Python 压根没收到货。那之后我学乖了不管装什么依赖第一件事就是看清解释器路径第二件事是装完必验证。这个习惯帮我省了非常多的时间也希望你看完这篇能直接绕过这个坑。