如何加载自定义节点
当 Comfy 启动时,它会扫描 custom_nodes
目录中的 Python 模块,并尝试加载它们。
如果模块导出 NODE_CLASS_MAPPINGS
,它将被视为自定义节点。
一个 Python 模块是一个包含 __init__.py
文件的目录。
该模块导出在 __init__.py
中定义的 __all__
属性中列出的任何内容。
init.py
当 Comfy 尝试导入模块时,会执行 __init__.py
。为了使模块被识别为包含自定义节点定义,它需要导出 NODE_CLASS_MAPPINGS
。如果它做到了(并且导入过程中没有出错),模块中定义的节点将在 Comfy 中可用。如果您的代码中存在错误,Comfy 将继续运行,但会报告该模块加载失败。所以请检查 Python 控制台!
一个非常简单的 __init__.py
文件可能看起来像这样:
from .python_file import MyCustomNode
NODE_CLASS_MAPPINGS = { "My Custom Node" : MyCustomNode }
__all__ = ["NODE_CLASS_MAPPINGS"]
NODE_CLASS_MAPPINGS
NODE_CLASS_MAPPINGS
必须是一个 dict
,将自定义节点名称(在整个 Comfy 安装中唯一)映射到相应的节点类。
NODE_DISPLAY_NAME_MAPPINGS
__init__.py
也可以导出 NODE_DISPLAY_NAME_MAPPINGS
,它将相同的唯一名称映射到节点的显示名称。
如果未提供 NODE_DISPLAY_NAME_MAPPINGS
,Comfy 将使用唯一名称作为显示名称。
WEB_DIRECTORY
如果您正在部署客户端代码,您还需要导出相对于模块的路径,其中可以找到 JavaScript 文件。传统上,将这些文件放置在您自定义的名为 js
的子目录中。
只有 .js
文件将被提供;您不能以这种方式部署 .css
或其他类型的文件
在 Comfy 的先前版本中,需要 __init__.py
来将 JavaScript 文件复制到主 Comfy 网络子目录中。您仍然会看到执行此操作的代码。不要这样做。
ComfyUI 管理器
尽管可以手动安装自定义节点,但大多数人使用
ComfyUI 管理器来安装它们。ComfyUI 管理器负责安装、更新和删除自定义节点以及任何依赖项。但它不是 Comfy 核心的组成部分,因此您需要手动安装它。
安装 ComfyUI 管理器
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
安装完成后重启 Comfy。
有关详细信息或特殊情况,请参阅 ComfyUI 管理器安装。
使用 ComfyUI 管理器
要将您的自定义节点通过 ComfyUI 管理器提供,您需要将其保存为一个 Git 仓库(通常位于 github.com
)。
然后提交一个到 ComfyUI Manager git 的 Pull Request,其中你已编辑 custom-node-list.json
来添加你的节点。
更多信息.
当用户安装节点时,ComfyUI Manager 将:
1、Git Clone
git克隆仓库
2、安装Python依赖项
安装自定义节点存储库中 requirements.txt
下列出的pip依赖项(如果存在),
pip install -r requirements.txt
与pip
一样,您的节点需求可能与其他自定义节点发生冲突。不要使您的requirements.txt
比必需的更加严格。
3、运行安装脚本
如果自定义节点仓库中有install.py
,请执行它。
install.py
从自定义节点的根路径执行。
ComfyUI 管理器文件
如上所述,ComfyUI 管理器将使用一些文件和脚本来管理自定义节点的生命周期。这些都是可选的。
requirements.txt
—— 如上所述的 Python 依赖项install.py
,uninstall.py
—— 当自定义节点安装或卸载时执行,用户可以直接删除目录,因此不能依赖uninstall.py
执行。disable.py
,enable.py
- 当自定义节点禁用或重新启用时执行enable.py
仅在禁用的节点重新启用时运行 - 它应该只撤销disable.py
中执行的操作
禁用的自定义节点子目录名称将附加.disabled
,Comfy 会忽略这些模块node_list.json
- 仅当自定义节点的 NODE_CLASS_MAPPINGS 模式不常规时 才需要。
有关官方详细信息,请参阅ComfyUI 管理器指南。