运行YOLOv5的train.py报错:无法从typing导入OrderedDict
解决YOLOv5训练时的
ImportError: cannot import name 'OrderedDict' from 'typing'问题 错误原因
你使用的Python3.7版本中,OrderedDict并不在typing模块里,而是在collections(或collections.abc)模块中。但你安装的torchvision版本过高,其maxvit.py代码里直接从typing导入OrderedDict,这和Python3.7不兼容。
可行解决方案
方案1:降低torchvision版本
安装与Python3.7兼容的torchvision版本(比如0.12.x系列,对应PyTorch 1.11.x),执行以下命令:# pip安装方式 pip install torchvision==0.12.0 torch==1.11.0 --force-reinstall # conda环境安装方式 conda install torchvision=0.12.0 torch=1.11.0 -c pytorch方案2:修改torchvision的maxvit.py文件
找到报错的文件路径/home/flint/anaconda3/lib/python3.7/site-packages/torchvision/models/maxvit.py,打开后修改导入语句:
将原代码:from typing import Any, Callable, List, Optional, OrderedDict, Sequence, Tuple修改为:
from typing import Any, Callable, List, Optional, Sequence, Tuple from collections import OrderedDict保存文件后重新运行
train.py即可。方案3:升级Python版本到3.8+
Python3.8及以上版本中,OrderedDict已被纳入typing模块,能够兼容高版本torchvision。若之前升级未成功,可重新确认Python版本是否切换到3.8及以上环境。
内容的提问来源于stack exchange,提问作者Hanna Dias
相关产品推荐
相关产品推荐

