使用PyTorch2.0.1导入RCAN模型遇'torch._six'模块缺失问题求助
解决PyTorch 2.x中
torch._six.queue缺失的问题 核心原因
PyTorch 2.0+版本移除了内部兼容模块torch._six,因此原代码中from torch._six import queue会触发ModuleNotFoundError。旧版本中torch._six.queue本质是对Python标准库队列模块的兼容封装,需根据代码实际用途替换为对应标准库实现。
分步解决方案
如果代码使用的是通用线程队列:
将from torch._six import queue替换为:import queue后续代码中如
queue.Queue、queue.PriorityQueue等用法无需修改,直接沿用标准库queue模块的API即可。如果代码用于多进程数据加载(使用多进程队列):
先确认原代码中queue是否指代multiprocessing.Queue,若是则替换为:from multiprocessing import Queue并将代码中所有
queue.Queue调用改为Queue(注意首字母大写)。
排查错误的关键
你之前尝试的替代方案报错,大概率是因为没有匹配代码对队列的实际需求:
from six import queue是Python2/3兼容的旧封装,PyTorch2.x环境下无需依赖six;multiprocessing.Queue仅适用于多进程通信场景,若代码原本用的是线程队列,替换后会因API不匹配报错。
内容的提问来源于stack exchange,提问作者lander14
相关产品推荐
相关产品推荐

