这是一个简单的 ComfyUI 节点示例项目,用于帮助初学者学习如何开发 ComfyUI 节点。
项目包含一个简单的示例节点 ImageInfoNode
,它可以:
- 接收一张输入图片
- 输出该图片的基本信息(尺寸、格式等)
- 找到你的 ComfyUI 自定义节点目录(通常在
ComfyUI/custom_nodes/
) - 在该目录下克隆本项目:
cd custom_nodes
git clone https://github.com/yourusername/ComfyUI-NodeSample
- 打开 ComfyUI
- 打开 ComfyUI Manager
- 进入 "Install Custom Nodes" 标签页
- 搜索 "ComfyUI Node Sample"
- 点击安装
本项目演示了如何正确管理 ComfyUI 自定义节点的依赖。
- 在项目根目录创建
requirements.txt
文件:
Pillow>=9.0.0
numpy>=1.21.0
当用户通过 ComfyUI Manager 安装你的节点时,这些依赖会被自动安装。
对于更复杂的依赖管理:
- 在项目根目录创建
install.py
脚本:
import os
import subprocess
import sys
def ensure_dependencies():
# 获取脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 从 ComfyUI 环境获取 Python 可执行文件路径
python = sys.executable
print("正在安装依赖...")
# 在正确的 Python 环境中使用 pip 安装依赖
subprocess.check_call([python, '-m', 'pip', 'install', '-r',
os.path.join(script_dir, 'requirements.txt')])
if __name__ == "__main__":
ensure_dependencies()
-
版本指定:
- 始终指定最低版本要求
- 使用
>=
指定最低版本要求 - 示例:
Pillow>=9.0.0
-
依赖隔离:
- 使用 ComfyUI 的 Python 环境
- 不要修改系统级 Python 包
- 在不同 ComfyUI 版本中测试你的依赖
-
冲突预防:
- 检查 ComfyUI 中已存在的依赖
- 使用与 ComfyUI 要求兼容的版本
- 在文档中说明潜在的冲突
-
错误处理:
- 为缺失的依赖添加适当的错误信息
- 在文档中提供故障排除步骤
- 依赖检查示例代码:
try:
import PIL
import numpy as np
except ImportError:
print("必需的依赖未安装。请使用以下命令安装:")
print("pip install -r requirements.txt")
- 启动 ComfyUI
- 在节点列表中找到 "Image Info" 节点
- 将图片节点连接到 Image Info 节点的输入端
- 运行工作流,查看输出的图片信息
本项目展示了创建 ComfyUI 节点的基本结构,包括:
- 节点类的定义
- 输入输出接口的定义
- 节点的注册方式
你可以基于这个模板开发自己的节点。
要将你的节点发布到 ComfyUI Manager:
- 为你的节点创建一个 GitHub 仓库
- 为仓库添加
ComfyUI
标签 - 在仓库根目录创建 custom_nodes.json 文件:
{
"your_node_name": {
"title": "你的节点标题",
"description": "节点的简要描述",
"tags": ["image", "utility"],
"repository": "github用户名/仓库名",
"install_type": "git_clone"
}
}
- 通过 Pull Request 将你的仓库提交到 ComfyUI Manager Custom Nodes List