Comfy 如何加载自定义节点

当 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 的 web 子目录下。你可能还会看到这样做的代码。不要这样做。