在最新版 ComfyUI 中 ComfyUI-nunchaku 启动报错修复实录:cannot import name ‘apply_rotary_emb‘
在最新版 ComfyUI 中 ComfyUI-nunchaku 启动报错修复实录cannot import name apply_rotary_embNunchaku ComfyUI Plugin 插件仓库【笔记】修复 ComfyUI 安装 ComfyUI-nunchaku 相关节点和 nunchaku 库之后启动出现 ‘nunchaku_versions.json‘ not found.‘ 错误【笔记】ComfyUI-Nunchaku 版本兼容性问题修复笔记一、问题现象在 ComfyUI 0.23.0 环境下启动时ComfyUI-nunchaku节点加载失败日志出现如下报错 ComfyUI-nunchaku Initialization Nunchaku version: 1.0.0 ComfyUI-nunchaku version: 1.0.1 Node NunchakuQwenImageDiTLoader import failed: Traceback (most recent call last): File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\__init__.py, line 38, in module from .nodes.models.qwenimage import NunchakuQwenImageDiTLoader File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\nodes\models\qwenimage.py, line 16, in module from ...model_configs.qwenimage import NunchakuQwenImage File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\model_configs\qwenimage.py, line 8, in module from .. import model_base File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\model_base\__init__.py, line 1, in module from .qwenimage import NunchakuQwenImage File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\model_base\qwenimage.py, line 12, in module from ..models.qwenimage import NunchakuQwenImageTransformer2DModel File H:\PythonProjects3/Win_ComfyUI/custom_nodes\ComfyUI-nunchaku\models\qwenimage.py, line 15, in module from comfy.ldm.qwen_image.model import ( ImportError: cannot import name apply_rotary_emb from comfy.ldm.qwen_image.model (H:\PythonProjects3\Win_ComfyUI\comfy\ldm\qwen_image\model.py) 下关键错误Node NunchakuQwenImageDiTLoader import failed: ImportError: cannot import name apply_rotary_emb from comfy.ldm.qwen_image.model (H:\PythonProjects3\Win_ComfyUI\comfy\ldm\qwen_image\model.py)完整堆栈指向ComfyUI-nunchaku/models/qwenimage.py的第 15 行该文件尝试从comfy.ldm.qwen_image.model导入apply_rotary_emb但此函数在 ComfyUI 新版中已被移除。二、环境信息项目版本/规格GPUNVIDIA GeForce RTX 3090 (24 GB VRAM)显存策略NORMAL_VRAM启用异步权重卸载PyTorch2.7.1cu126xformers0.0.31.post1Python3.12.11 (EPGF 架构)ComfyUI0.23.0前端包comfyui-frontend-package 1.44.19相关节点ComfyUI-nunchaku三、根因分析ComfyUI 在 0.22 版本中对qwen_image模块进行了重构旧版本comfy/ldm/qwen_image/model.py中定义了apply_rotary_emb函数。新版本≥0.22该函数被移除取而代之的是comfy/ldm/flux/math.py中的apply_rope1两者功能完全等价。而ComfyUI-nunchaku的models/qwenimage.py仍沿用旧导入路径导致启动时ImportError。四、解决方案方法 A手动修改适合快速验证编辑文件H:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-nunchaku\models\qwenimage.py找到第 15~21 行旧导入fromcomfy.ldm.qwen_image.modelimport(GELU,FeedForward,LastLayer,QwenImageTransformer2DModel,QwenTimestepProjEmbeddings,apply_rotary_emb,)替换为兼容写法fromcomfy.ldm.qwen_image.modelimport(GELU,FeedForward,LastLayer,QwenImageTransformer2DModel,QwenTimestepProjEmbeddings,)try:fromcomfy.ldm.qwen_image.modelimportapply_rotary_embexceptImportError:fromcomfy.ldm.flux.mathimportapply_rope1asapply_rotary_embfromtorchimportnn# 这行需保留说明apply_rope1与apply_rotary_emb功能一致通过别名导入后文件中后续调用apply_rotary_emb的地方无需任何改动。方法 B一键脚本推荐可重复、可回滚将以下脚本保存为fix_nunchaku_qwenimage.py在 ComfyUI 环境终端中执行即可。#!/usr/bin/env python3# -*- coding: utf-8 -*- Fix ComfyUI-nunchaku qwenimage.py import error for apply_rotary_emb. importshutilimportsysfrompathlibimportPath# 配置 TARGET_FILEPath(rH:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-nunchaku\models\qwenimage.py)# OLD_IMPORTfrom comfy.ldm.qwen_image.model import ( GELU, FeedForward, LastLayer, QwenImageTransformer2DModel, QwenTimestepProjEmbeddings, apply_rotary_emb, )NEW_IMPORTfrom comfy.ldm.qwen_image.model import ( GELU, FeedForward, LastLayer, QwenImageTransformer2DModel, QwenTimestepProjEmbeddings, ) try: from comfy.ldm.qwen_image.model import apply_rotary_emb except ImportError: from comfy.ldm.flux.math import apply_rope1 as apply_rotary_embdefmain():ifnotTARGET_FILE.exists():print(f[ERROR] 文件未找到:{TARGET_FILE})sys.exit(1)contentTARGET_FILE.read_text(encodingutf-8)iffrom comfy.ldm.flux.math import apply_rope1 as apply_rotary_embincontent:print([INFO] 文件已打过补丁无需重复操作。)sys.exit(0)ifOLD_IMPORTnotincontent:print([ERROR] 未找到预期的旧导入块文件可能已被手动修改。)sys.exit(1)# 创建备份backup_pathTARGET_FILE.with_suffix(.py.bak)shutil.copy2(TARGET_FILE,backup_path)print(f[INFO] 备份已创建:{backup_path})# 替换new_contentcontent.replace(OLD_IMPORT,NEW_IMPORT)TARGET_FILE.write_text(new_content,encodingutf-8)print([SUCCESS] 补丁应用成功请重启 ComfyUI。)if__name____main__:main()运行修改脚本python fix_nunchaku_qwenimage.py执行结果示例(Win_ComfyUI) H:\PythonProjects3\Win_ComfyUIpython fix_nunchaku_qwenimage.py [INFO] Backup created: H:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-nunchaku\models\qwenimage.py.bak [SUCCESS] Patch applied! File: H:\PythonProjects3\Win_ComfyUI\custom_nodes\ComfyUI-nunchaku\models\qwenimage.py Please restart ComfyUI to take effect.五、验证修复重启 ComfyUI 后启动日志中不再出现Node NunchakuQwenImageDiTLoader import failedComfyUI-nunchaku节点正常加载工作流中 Qwen-Image 相关节点可正常使用若后续 ComfyUI 官方或 nunchaku 插件发布正式修复只需删除qwenimage.py将.bak还原或直接更新插件即可。六、总结与注意事项兼容性try/except写法同时兼容新旧 ComfyUI。若日后回退到 0.21.x 等旧版脚本无需回滚也能正常工作。备份脚本自动创建.py.bak建议保留方便随时还原。平台通用本修复适用于 Windows / Linux / macOS只需修改脚本中的TARGET_FILE路径。关注上游该问题已在 nunchaku 官方仓库被报告Issue #820建议关注后续版本更新以便在官方修复后移除临时补丁。修复时间2026-06-02环境ComfyUI 0.23.0 PyTorch 2.7.1 RTX 3090