Skip to main content

工作流文件依赖于其他文件

我们经常从社区获取到各种各样的工作流文件,但往往会发现工作流在加载之后无法直接运行。这是因为一个工作流文件除了工作流自身之外还依赖其他文件,比如媒体资产的输入、模型、自定义节点、相关的 Python 依赖等等。 只有当所有相关依赖关系都得到满足时,ComfyUI 工作流才能正常运行。 ComfyUI 工作流的依赖关系主要分为以下几类:
  • 资产(媒体文件包括音频、视频、图像等输入)
  • 自定义节点
  • Python 依赖
  • 模型(如:Stable Diffusion 模型等)

资产

AI 模型就是资产的一个例子。在媒体制作中,资产是提供输入数据的某种媒体文件。例如,视频编辑程序操作的是存储在磁盘上的影片文件。编辑程序的项目文件保存着指向这些影片文件资产的链接,从而实现非破坏性编辑,不会改动原始影片文件。 ComfyUI 的工作方式也是如此。只有当所有必需的资产都被找到并加载后,工作流才能运行。生成式 AI 模型、图像、视频和声音都是工作流可能依赖的资产示例。因此,它们被称为依赖资产资产依赖关系

自定义节点

自定义节点是 ComfyUI 的重要组成部分,可扩展其功能。这些节点由社区创建,可通过安装为你的工作流添加新的能力。

Python 依赖项

ComfyUI 是一个基于 Python 的项目。我们构建了一套独立的 Python 环境来运行 ComfyUI,所有相关的依赖项都安装在这个隔离的 Python 环境中。

ComfyUI 的依赖项

你可以在 requirements.txt 文件中查看 ComfyUI 当前的依赖项:
随着 ComfyUI 的不断演进,我们可能会相应地调整依赖项,例如添加新的依赖项,或移除不再需要的依赖项。 因此,如果你使用 Git 更新 ComfyUI,在拉取最新更新之后,需要在相应的环境中运行以下命令:
这样可以确保 ComfyUI 的依赖项保持最新,从而正常运行。你也可以修改特定软件包的依赖版本,以升级或降级某些依赖项。 此外,ComfyUI 的前端 ComfyUI_frontend 目前作为独立项目维护。我们会在相应版本稳定之后更新 comfyui-frontend-package 依赖项的版本。如果你需要切换到不同的前端版本,可以在这里查看版本信息。

自定义节点的依赖项

得益于 ComfyUI 社区众多作者的努力,我们可以通过使用不同的自定义节点来扩展 ComfyUI 的功能,实现令人惊叹的创意。 通常,每个自定义节点都有自己的依赖项和单独的 requirements.txt 文件。 如果你使用 ComfyUI Manager 安装自定义节点,ComfyUI Manager 通常会 自动安装相应的依赖项。 也存在需要手动安装依赖项的情况。目前,所有自定义节点都安装在 ComfyUI/custom_nodes 目录中。 你需要在 ComfyUI 的 Python 环境中进入相应的插件目录,并运行 pip install -r requirements.txt 来安装依赖项。 如果你使用的是 Windows 便携版,可以在 ComfyUI_windows_portable 目录中使用以下命令:
来安装对应节点的依赖项。

依赖冲突

依赖冲突是使用 ComfyUI 时常见的问题。你可能会发现,在安装或更新某个自定义节点之后,之前已安装的自定义节点在 ComfyUI 的节点库中找不到了,或者出现错误弹窗。一个可能的原因就是依赖冲突。 依赖冲突可能有很多原因,例如:
  1. 自定义节点锁定版本
有些插件可能会固定依赖库的确切版本(例如 open_clip_torch==2.26.1),而另一些插件可能要求更高的版本(例如 open_clip_torch>=2.29.0),导致无法同时满足两者的版本要求。 解决方案:你可以尝试将固定版本的依赖改为范围约束,例如 open_clip_torch>=2.26.1,然后重装依赖项来解决这些问题。
  1. 环境污染
在安装自定义节点依赖项的过程中,可能会覆盖其他插件已安装的库的版本。例如,多个插件可能都依赖 PyTorch,但要求的 CUDA 版本不同,后安装的插件就会破坏现有的环境。 解决方案
  • 你可以尝试在 Python 虚拟环境中手动安装特定版本的依赖项来解决此类问题。
  • 或者为不同的插件创建不同的 Python 虚拟环境来解决这些问题。
  • 尝试逐个安装插件,每安装一个就重启 ComfyUI,观察是否出现依赖冲突。
  1. 自定义节点的依赖版本与 ComfyUI 的依赖版本不兼容
这类依赖冲突可能更难解决,你可能需要升级或降级 ComfyUI,或者更改自定义节点的依赖版本来解决这些问题。 解决方案:这类依赖冲突可能更难解决,你可能需要升级或降级 ComfyUI,或者更改自定义节点的依赖版本来解决这些问题。

模型

模型是 ComfyUI 重要的资产依赖。各种自定义节点和工作流都围绕特定模型来构建,例如 Stable Diffusion 系列、Flux 系列、LTXV 等。 这些模型是使用 ComfyUI 进行创作的重要基础,因此我们需要确保所使用的模型能够正常可用。通常,模型会保存在 ComfyUI/models/ 下对应的目录中。当然,你也可以通过修改模板来创建 extra_model_paths.yaml,让 ComfyUI 识别额外的模型路径。 这样,多个 ComfyUI 实例就可以共享同一个模型库,从而减少磁盘占用。

软件

像 ComfyUI 这样的高级应用同样具有软件依赖。这些是应用程序运行所必需的编程代码库和数据。自定义节点就是软件依赖的典型例子。在更基础的层面上,Python 编程环境是 ComfyUI 最根本的依赖。运行特定版本的 ComfyUI 需要对应正确版本的 Python。Python、ComfyUI 以及自定义节点的更新都可以在 ComfyUI 管理器 窗口中完成。 ComfyUI 自定义节点管理器