必须用python 3.10.9+独立虚拟环境+正确设置pythonpath,否则断点进不去、模块报错;根本原因是vs code调试时未将custom_nodes路径加入sys.path,导致import失败,且环境不一致引发torch等依赖冲突。

必须用 Python 3.10.9 + 独立虚拟环境 + 正确设置 PYTHONPATH,否则断点进不去、模块全报错。
为什么调试器总提示“ModuleNotFoundError”
根本原因不是代码写错了,而是 Python 解释器压根没看到你的自定义节点目录。ComfyUI 启动时会从 custom_nodes 文件夹加载模块,但 VS Code 默认不把这路径加进 sys.path。
- 不设
PYTHONPATH:VS Code 调试时只认当前工作区和标准库,import my_node必然失败 - 路径写错位置:比如写成
${workspaceFolder}/nodes,但实际节点在${workspaceFolder}/custom_nodes/my_node - 环境没隔离:系统 Python 或其他项目环境里装了冲突的
torch,导致 ComfyUI 进程一启动就崩溃,根本到不了断点
解决方法就是让调试器和 ComfyUI 运行时看到**完全一致的 Python 环境和模块路径**。
launch.json 的最小可用配置
在项目根目录建 .vscode/launch.json,内容必须包含三要素:指定 Python 解释器、传入 PYTHONPATH、指向 ComfyUI 入口脚本。
{
"version": "0.2.0",
"configurations": [
{
"name": "调试自定义节点",
"type": "python",
"request": "launch",
"module": "main",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${workspaceFolder}/custom_nodes:${env:PYTHONPATH}"
}
}
]
}
-
"module": "main"比"program"更可靠——它会自动找comfyui/main.py(假设你把 ComfyUI 源码放在项目内),避免硬编码路径 -
PYTHONPATH值里必须用:(Linux/Mac)或;(Windows)分隔多个路径,且${workspaceFolder}/custom_nodes要放在最前面 - 别加
"justMyCode": false——除非你真要进 ComfyUI 底层源码,否则只会让断点跳来跳去,干扰判断
Python 环境必须与 ComfyUI 便携版对齐
如果你用的是 ComfyUI Portable(Windows 最常见),它的嵌入式 Python 版本是锁死的。你在 VS Code 里选错解释器,调试时看似能跑,但节点一加载就 ImportError 或 Segmentation fault。
- 查便携版 Python 版本:进
ComfyUI_windows_portable\python\python.exe目录,运行python --version,大概率是3.10.9 - VS Code 中按
Ctrl+Shift+P→ 输入Python: Select Interpreter→ 找到并选中这个便携版里的python.exe - 验证是否生效:在调试控制台输入
import sys; print(sys.executable),输出路径必须和便携版里的一致
用 conda 或 venv 创建的环境,如果 Python 版本不是 3.10.9,或者 torch 版本不是 2.0.1+cu118,节点可能在你本地能调试,但发给别人用便携版就直接白屏。
断点不触发?先检查这三个地方
VS Code 断点灰色、提示 “unbound breakpoint”,90% 是以下三个位置之一出问题:
-
custom_nodes/my_node/__init__.py里没正确注册节点类——必须有NODE_CLASS_MAPPINGS和NODE_DISPLAY_NAME_MAPPINGS字典,且键名要和 ComfyUI UI 里显示的节点名严格一致 - 节点文件没放在
custom_nodes/xxx/子目录下,而是直接丢在custom_nodes/xxx.py—— ComfyUI 只扫描子目录,不扫平级 .py 文件 - 调试时没真正触发该节点执行——比如你在
my_node.py的execute()方法里打了断点,但工作流里根本没连上这个节点,或者输入没连全导致被跳过
最简单的验证方式:在 __init__.py 顶部加一行 print("my_node loaded"),启动 ComfyUI 时看终端有没有输出。没有?说明路径或命名有问题;有?再查断点位置和执行路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











