ImportError: cannot import name ‘OrderedDict‘ from ‘typing‘ 问题解决

ImportError: cannot import name 'OrderedDict' from 'typing' 问题解决

bash 复制代码
运行model.py时报错了
E:\004---CSDN_resource>C:\Users\cxx\anaconda3\Scripts\activate && conda activate python37

(python37) E:\004---CSDN_resource>C:\Users\cxx\anaconda3\envs\python37\python.exe e:/004---CSDN_resource/02_resnet50_image_classification/model.py
Traceback (most recent call last):
  File "e:/004---CSDN_resource/02_resnet50_image_classification/model.py", line 3, in <module>
    from torchvision import models
  File "C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\__init__.py", line 5, in <module>
    from torchvision import datasets, io, models, ops, transforms, utils
  File "C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\models\__init__.py", line 16, in <module>
    from .maxvit import *
  File "C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\models\maxvit.py", line 3, in <module>
    from typing import Any, Callable, List, Optional, OrderedDict, Sequence, Tuple
ImportError: cannot import name 'OrderedDict' from 'typing' (C:\Users\cxx\anaconda3\envs\python37\lib\typing.py)

(python37) E:\004---CSDN_resource>

这个报错非常关键,而且你其实已经踩到了一个"版本地雷" 。

结论我先给你:

❌ 不是你的 model.py 写错了

❌ 也不是 ResNet50 的问题

✅ 是 Python 3.7 + torchvision 版本不兼容导致的

下面我一步一步把原因、判断依据、以及最稳妥的解决方案给你讲清楚,你也可以把这段内容整理进博客,作为"真实踩坑记录"。


文章目录

    • [ImportError: cannot import name 'OrderedDict' from 'typing' 问题解决](#ImportError: cannot import name 'OrderedDict' from 'typing' 问题解决)
    • 一、报错本质是什么?
      • [关键点 🔍](#关键点 🔍)
    • [二、为什么"你什么都没用 maxvit,却还是报错?"](#二、为什么“你什么都没用 maxvit,却还是报错?”)
    • 三、你的环境组合为什么"必炸"
    • [四、最稳妥的 3 种解决方案(按推荐顺序)](#四、最稳妥的 3 种解决方案(按推荐顺序))
      • [✅ 方案一(强烈推荐):单独为资源②建 Python 3.8 环境](#✅ 方案一(强烈推荐):单独为资源②建 Python 3.8 环境)
        • [1️⃣ 新建环境](#1️⃣ 新建环境)
        • [2️⃣ 安装匹配版本(CPU 版即可)](#2️⃣ 安装匹配版本(CPU 版即可))
        • [3️⃣ 再运行 model.py](#3️⃣ 再运行 model.py)
      • [⚠️ 方案二(不推荐,但可用):强行降级 torchvision](#⚠️ 方案二(不推荐,但可用):强行降级 torchvision)
      • [❌ 方案三(不建议):改 torchvision 源码](#❌ 方案三(不建议):改 torchvision 源码)
    • 五、你现在该怎么选?(给你一个"资源作者级建议")

一、报错本质是什么?

你的核心报错是这一句:

复制代码
ImportError: cannot import name 'OrderedDict' from 'typing'

而它出现在这里:

复制代码
torchvision\models\maxvit.py
from typing import Any, Callable, List, Optional, OrderedDict, Sequence, Tuple

关键点 🔍

  • OrderedDict 不属于 typing 模块(Python 3.7)
  • 它属于 collections 或 typing_extensions
  • 但 新版 torchvision 假设你使用的是较新的 Python

👉 也就是说:你现在的 Python 版本,已经"跟不上"你装的 torchvision 了。


二、为什么"你什么都没用 maxvit,却还是报错?"

这是一个非常容易让人迷糊的地方。

你写的是:

python 复制代码
from torchvision import models

但实际上 torchvision 内部会:

python 复制代码
import torchvision.models.maxvit

也就是说:

哪怕你只想用 ResNet50,只要 torchvision 版本偏新,它就会加载 maxvit。

而 maxvit 是 Python ≥ 3.8 时代的模型。


三、你的环境组合为什么"必炸"

你现在的关键信息是:

  • Python:3.7
  • Torch:1.13.x
  • Torchvision:0.14+(隐含)

这是一个不安全组合。

官方兼容关系(简化版)

Python Torch Torchvision 结论
3.7 ≤1.10 ≤0.11 ✅ 稳定
3.7 1.12 / 1.13 0.13 / 0.14 ❌ 高概率炸
≥3.8 1.13 0.14 ✅ 稳定

👉 你正好处在"官方已经不太照顾"的区间。


四、最稳妥的 3 种解决方案(按推荐顺序)

✅ 方案一(强烈推荐):单独为资源②建 Python 3.8 环境

这是工程上最干净、博客里也最合理的方案。

1️⃣ 新建环境
bash 复制代码
conda create -n resnet50_py38 python=3.8 -y
conda activate resnet50_py38
2️⃣ 安装匹配版本(CPU 版即可)
bash 复制代码
pip install torch==1.13.1 torchvision==0.14.1

如果你后面要讲 GPU,可以再单独开一篇博客,不要现在纠缠。

3️⃣ 再运行 model.py
bash 复制代码
python model.py

✅ 问题会直接消失


⚠️ 方案二(不推荐,但可用):强行降级 torchvision

如果你必须留在 Python 3.7(比如资源①已经这样),那就:

bash 复制代码
pip uninstall torchvision -y
pip install torchvision==0.11.3

并且 Torch 最好一起降:

bash 复制代码
pip install torch==1.10.2 torchvision==0.11.3

📌 缺点:

  • ResNet50 还能用
  • 但你未来写博客会一直受版本限制
  • 不利于后续资源扩展

❌ 方案三(不建议):改 torchvision 源码

网上有人会教你:

python 复制代码
from collections import OrderedDict

然后改 maxvit.py。

⚠️ 这是非常不专业的做法,也不适合教学资源。


五、你现在该怎么选?(给你一个"资源作者级建议")

站在你现在这个阶段,我明确建议你:

资源①(模板) :

允许 Python 3.7,偏"基础工程"
资源②(ResNet50 实战) :

👉 升级到 Python 3.8,作为"进阶实战"

这在博客里反而是一个加分点,你可以这样写:

"从这个资源开始,我建议使用 Python 3.8,这是当前 PyTorch 工程更主流、也更稳定的选择。"

相关推荐
计算机毕业编程指导师14 小时前
计算机毕设推荐:基于深度学习的动物图像识别方法研究(Python+Django+PyTorch)
pytorch·python·深度学习·计算机·毕业设计·课程设计·图像识别
zh路西法1 天前
【四足强化学习经典算法】(一):RMA——盲视运动控制与快速适应模块
pytorch·强化学习·1024程序员节·四足机器人·dagger·pyhon·rma
Be for thing2 天前
PyCharm安装与PyTorch项目配置|Jupyter Notebook与PyCharm使用对比
pytorch·学习·1024程序员节
zh路西法2 天前
【模型式强化学习】(二)PETS——从概率动力学模型到模型预测控制(MPC)
pytorch·python·强化学习·pe·mpc·ces·pets
段一凡-华北理工大学3 天前
高炉炼铁机器视觉与智能识别十八讲~系列文章17:实战案例:一个风口监控系统的完整搭建
人工智能·pytorch·深度学习·机器学习·计算机视觉·高炉风口监测系统
Yolanda_20223 天前
PyTorch 线性层nn.Linear底层数学原理
人工智能·pytorch·python
专注仿真3 天前
多智能体强化学习实战:从 Dec-POMDP 到 QMIX/MADDPG/MAPPO 的可运行 PyTorch 实现
人工智能·pytorch·python
Web3&Basketball3 天前
TorchTPU 迁移实战:3 个 CUDA 卡点
pytorch·性能调优·cuda·tpu·模型迁移·torchtpu
田里的水稻4 天前
FA_CNN卷积神经网络十二_CIFAR10全流程PyTorch
人工智能·pytorch·深度学习·神经网络·cnn
论文复现现场4 天前
RTX 3090 云GPU租赁价格对比:8家平台配置、计费方式与环境测试
linux·运维·人工智能·pytorch·深度学习·云计算·3090