依赖关系
了解 ComfyUI 中的依赖关系
工作流文件依赖于其他文件
我们经常可以从社区里获取到各种各样的工作流文件,但往往在运行之后发现工作流无法直接运行,这是因为一个工作流文件除了工作流自身之外还要依赖于其它文件,比如媒体资产的输入、模型、自定义节点、相关的 Python 依赖等等。 ComfyUI 的工作流只有在所有相关依赖条件都被满足的情况下才能正常运行。
ComfyUI 工作流的运行依赖主要分为以下几类:
- 资产(媒体文件包括音频、视频、图像等等输入)
- 自定义节点
- Python 依赖
- 模型(如:Stable Diffusion 模型等)
资产
AI 模型是一个 资产 的例子。在媒体制作中,资产是提供输入数据的某种媒体文件。例如,视频编辑程序处理存储在磁盘上的电影文件。编辑程序的项目文件保存了这些电影文件资产的链接,允许非破坏性编辑,而不改变原始电影文件。
ComfyUI 的工作方式也是如此。工作流只有在找到并加载所有必需的资产时才能运行。生成性 AI 模型、图像、电影和声音是工作流可能依赖的一些资产示例。因此,这些被称为 依赖资产 或 资产依赖关系。
自定义节点
自定义节点是 ComfyUI 的一个重要组成部分,
Python 依赖
ComfyUI 是一个基于 Python 的项目,我们构建了一个独立的 Python 运行环境,来运行 ComfyUI,所有的相关依赖都会被安装在在这个独立的 Python 运行环境中。
ComfyUI 的依赖
你可以在 ComfyUI 的 requirements.txt 文件中查看 ComfyUI 当前的依赖
随着 ComfyUI 的发展,我们可能也会调整相应的依赖,比如添加新的依赖,或者删除一些不再需要的依赖。 所以如果你是使用 Git 来更新 ComfyUI 那么你需要在拉取最新的更新之后在对应的环境下使用
从而来安装 ComfyUI 最新的依赖以保证 ComfyUI 的正常运行,你也可以通过修改特定包的依赖版本来实现部分依赖的升级或者降级
另外 ComfyUI 的前端 ComfyUI_frontend 目前是作为一个独立的项目来进行维护,我们会在对应版本稳定之后更新对应的 comfyui-frontend-package
依赖版本,如果你需要切换对应的前端版本,你可以在这里查看对应的版本信息。
自定义节点的依赖
感谢 ComfyUI 社区众多作者的努力,使得我们可以通过使用不同的自定义节点(Custom Nodes)来扩展 ComfyUI 的功能,实现令人赞叹的创意。
通常,每个自定义节点都会有一个独立的依赖,并且每个自定义节点都会有一个独立的 requirements.txt
文件。
如果你使用 ComfyUI Manager 来安装自定义节点,那么通常 ComfyUI Manager 会自动帮你安装对应的依赖。
当然也有一些需要你手动进行依赖安装的情况,目前所有的自定义节点都将被安装至 ComfyUI/custom_nodes
目录下,
你需要在你的 ComfyUI Python 环境中进入到对应插件的目录然后执行 pip install -r requirements.txt
来安装对应的依赖。
如果是 Windows 便携版,你可以在便携版的ComfyUI_windows_portable
目录下使用
来安装对应节点的依赖。
依赖冲突
依赖冲突是我们在使用 ComfyUI 的时候经常会遇到的问题,你可能会发现在安装或者更新好某个自定义节点后,之前安装的一些自定义节点在 ComfyUI 的节点库中查找不到了,或者出现了错误弹窗,其中一个可能的原因就是依赖冲突。
依赖冲突的原因可能有很多,比如:
- 自定义节点的版本锁定
部分插件在开发时会固定依赖库的精确版本(如open_clip_torch==2.26.1
),而其他插件可能要求更高版本(如open_clip_torch>=2.29.0
),导致版本无法同时满足。
解决方法:你可以试着把对应的固定版本依赖改为范围约束比如 open_clip_torch>=2.26.1
,然后重新执行依赖的安装来解决这些问题。
- 环境污染
在执行自定义节点依赖安装的过程中,可能会覆盖其它插件已经安装的库的版本,比如多个插件依赖 PyTorch
但要求的是不同的 CUDA 版本,后安装的插件会破坏原有的环境。
解决方法:
- 你可以试着手动在 python 虚拟环境中手动安装特定版本的依赖,来解决这类问题。
- 或者为不同的插件创建不同的 python 虚拟环境,来解决这类问题。
- 试着逐个安装插件,在安装完每个插件后,重新启动 ComfyUI 来观察是否会出现依赖冲突。
- 自定义节点依赖版本与 ComfyUI 依赖版本不兼容
这类依赖冲突的问题可能较难解决,你可能需要通过升降级 ComfyUI 或者更改自定义节点的依赖版本,来解决这类问题。
解决方法:这类依赖冲突的问题可能较难解决,你可能需要通过升降级 ComfyUI 或者更改自定义节点的依赖版本,来解决这类问题。
模型
模型是 ComfyUI 的一个重要资产依赖,基本上各类的自定义节点和工作流都围绕着特定的模型展开,比如 stable diffusion 系列、Flux 系列、Ltxv 等等。
这些模型是我们使用 ComfyUI 进行创作的重要基础,所以我们在使用 ComfyUI 的时候需要确保我们使用的模型是正常可用的,通常,我们对应的模型都在 ComfyUI/models/
目录的对应目录进行保存,当然你也可以通过修改模板创建一个 extra_model_paths.yaml 来使得额外的模型路径被 ComfyUI 识别。
这样就可以实现多个 ComfyUI 实例共享同一个模型库,从而减少磁盘的占用。