Linux下ComfyUI使用Ultimate SD Upscale批量模式时出现'NoneType' object has no attribute 'cursor_adjust'错误
兄弟,我之前在Python 3.12下用USDU批量 upscale 的时候也踩过这个坑!先把你的报错信息贴出来更清晰:
Exception during processing !!! 'NoneType' object has no attribute 'cursor_adjust'
Traceback (most recent call last):
File "/root/ComfyUI/execution.py", line 525, in execute
output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_d...
这个错误本质是批量处理补丁和Python 3.12的兼容性问题——要么是补丁没适配3.12的类初始化、异步逻辑变化,要么是补丁打错了位置,导致USDU里负责进度追踪的某个对象没被正确实例化,变成了None,代码却硬要调用它的cursor_adjust方法,自然就炸了。
给你几个亲测有效的解决办法:
优先找适配Python 3.12的USDU批量补丁
很多旧补丁是给Python 3.10/3.11写的,3.12对类属性初始化、异步逻辑的处理有调整,老补丁跑起来就会出这种对象未初始化的问题。建议去USDU的官方仓库看看有没有针对3.12的批量更新分支,或者找其他用户分享的适配版补丁。手动改代码补漏洞
如果找不到适配的补丁,自己动手改两行代码也能搞定:- 找到ComfyUI里USDU的目录,一般是
ComfyUI/custom_nodes/ultimate-sd-upscale - 打开批量处理相关的文件(比如
batch_processor.py或者你打补丁时修改的ultimate_upscale_node.py) - 搜索到调用
cursor_adjust的代码行,在调用前加个非空判断,比如:if self.progress_tracker is not None: self.progress_tracker.cursor_adjust(...)
这样就算对象没初始化,代码也会跳过这个非必要的进度调整步骤,不会报错。
- 找到ComfyUI里USDU的目录,一般是
降级Python到3.11.x版本
这是最省心的方案!ComfyUI和绝大多数自定义节点对Python 3.11的兼容性拉满,USDU的批量模式在3.11下基本不会出现这种幺蛾子。你可以用pyenv或者conda快速创建一个3.11的虚拟环境,不用卸载3.12,直接在新环境里重新安装ComfyUI和USDU就行,分分钟解决问题。回滚ComfyUI到稳定版本
有时候不是USDU的锅,是ComfyUI的核心执行逻辑(就是报错里的execution.py)和USDU的批量模块不兼容。你可以把ComfyUI回滚到2024年上半年的某个稳定版本(比如v1.7.x系列),再配合USDU的对应版本,批量模式就能正常跑了。
我当时是直接降级到Python 3.11.8,重新装了一遍USDU,批量处理直接就正常工作了。要是改代码的话,记得改前先备份原文件,免得手滑改崩了没法恢复!




