用途:这是 comfy-build 的参考技能,配合 comfy skills show comfy-build-pins 阅读,用于决定 comfy-build.yaml 的 pipDependencies 中哪些行该删除、哪些该保留,或在构建因依赖冲突失败时排查原因。
主要原则:init 会把整个 pip freeze 写入 pipDependencies,并附注释标明抓取平台。但冻结结果描述的是当时运行环境,不是要构建的环境;例如在 macOS/Python 3.13 上抓取的冻结会把版本强加到 linux/Python 3.12 构建上。默认应清空 pipDependencies,让构建按基础镜像的 torch 解析各包自身需求。
应删除项:torch、torchvision、torchaudio、triton、xformers、所有 nvidia-、comfyui-frontend-package、comfyui-manager、comfyui-embedded-docs,以及仅存在于源操作系统的 wheel(如 pywin32、pyobjc)。锁定 torch 栈中某一项会释放其余两项,不应这样做。
保留条件:仅当某包文档明确要求某版本且别无来源,或 comfy-build-failures 指明某失败时才保留。numpy 与 scipy 属同一轴,需一起锁;同一 import 的多个包(如 opencv-python 与 opencv-python-headless 都装 cv2)也需锁到同一版本。override 只强制版本,不会新增包。
预测冲突:构建耗时较长,可先合并核心与各自定义节点的 requirements.txt 检查。可浅克隆各包到定义中锁定的 ref(gitRef 为提交 SHA 时需 fetch 后 checkout FETCH_HEAD),拼接后剔除上述删除项,再用 uv 解析。注意 requirements.txt 是构建唯一读取的文件,pyproject.toml 中的约束不被应用。构建 Python 版本以 comfy build refs base-images 为准。解析需登录;无解析器可询问是否安装。解析成功不等于无问题,拒绝解析即是明确发现。
限制:无法发现针对其他版本编译的二进制,以及包在构建时自跑的安装脚本,最终环境可能与解析结果不同。