news 2026/8/11 20:55:37

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ImportError: cannot import name ‘OrderedDict‘ from ‘typing‘ 问题解决

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

运行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", line3,in<module>from torchvisionimportmodels File"C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\__init__.py", line5,in<module>from torchvisionimportdatasets, io, models, ops, transforms, utils File"C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\models\__init__.py", line16,in<module>from .maxvitimport* File"C:\Users\cxx\anaconda3\envs\python37\lib\site-packages\torchvision\models\maxvit.py", line3,in<module>from typingimportAny, Callable, List, Optional, OrderedDict, Sequence, Tuple ImportError: cannotimportname'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' 问题解决
    • 一、报错本质是什么?
      • 关键点 🔍
    • 二、为什么“你什么都没用 maxvit,却还是报错?”
    • 三、你的环境组合为什么“必炸”
      • 官方兼容关系(简化版)
    • 四、最稳妥的 3 种解决方案(按推荐顺序)
      • ✅ 方案一(强烈推荐):单独为资源②建 Python 3.8 环境
        • 1️⃣ 新建环境
        • 2️⃣ 安装匹配版本(CPU 版即可)
        • 3️⃣ 再运行 model.py
      • ⚠️ 方案二(不推荐,但可用):强行降级 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)
  • 它属于collectionstyping_extensions
  • 新版 torchvision 假设你使用的是较新的 Python

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


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

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

你写的是:

fromtorchvisionimportmodels

但实际上 torchvision 内部会:

importtorchvision.models.maxvit

也就是说:

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

而 maxvit 是Python ≥ 3.8 时代的模型


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

你现在的关键信息是:

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

这是一个不安全组合

官方兼容关系(简化版)

PythonTorchTorchvision结论
3.7≤1.10≤0.11✅ 稳定
3.71.12 / 1.130.13 / 0.14❌ 高概率炸
≥3.81.130.14✅ 稳定

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


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

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

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

1️⃣ 新建环境
conda create -n resnet50_py38python=3.8-y conda activate resnet50_py38
2️⃣ 安装匹配版本(CPU 版即可)
pipinstalltorch==1.13.1torchvision==0.14.1

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

3️⃣ 再运行 model.py
python model.py

问题会直接消失


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

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

pip uninstall torchvision -y pipinstalltorchvision==0.11.3

并且 Torch 最好一起降:

pipinstalltorch==1.10.2torchvision==0.11.3

📌 缺点:

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

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

网上有人会教你:

fromcollectionsimportOrderedDict

然后改maxvit.py

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


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

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

资源①(模板)
允许 Python 3.7,偏“基础工程”

资源②(ResNet50 实战)
👉升级到 Python 3.8,作为“进阶实战”

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 15:54:39

Langchain-Chatchat跨境汇款流程问答系统

Langchain-Chatchat跨境汇款流程问答系统 在跨国企业财务部门&#xff0c;一个常见的场景是&#xff1a;新入职的结算专员面对复杂的跨境汇款政策手册&#xff0c;反复翻阅几十页PDF文档只为确认“美元汇往欧洲是否需要额外申报”——耗时且易出错。与此同时&#xff0c;合规团…

作者头像 李华
网站建设 2026/8/12 16:52:33

人工智能通识 题目一

汉诺塔问题题目描述有 3 根柱子&#xff08;记为 A、B、C&#xff09;和 n 个大小互不相同的圆盘&#xff0c;所有圆盘初始时都套在柱子 A 上&#xff0c;且圆盘按 “上小下大” 的顺序叠放&#xff08;大圆盘不能放在小圆盘上方&#xff09;。要求将所有圆盘从柱子 A 移动到柱…

作者头像 李华
网站建设 2026/8/10 23:55:36

Langchain-Chatchat TLS 1.3新特性理解问答系统

Langchain-Chatchat TLS 1.3新特性理解问答系统 在企业对数据隐私和安全合规要求日益严苛的今天&#xff0c;传统的云端AI问答系统正面临严峻挑战。尽管它们具备强大的语言理解能力&#xff0c;但将敏感文档上传至第三方服务器的做法&#xff0c;在金融、医疗或法律等行业几乎不…

作者头像 李华
网站建设 2026/8/11 7:04:08

Langchain-Chatchat CVSS评分理解问答平台

Langchain-Chatchat CVSS评分理解问答平台 在网络安全领域&#xff0c;面对每年数以万计的漏洞报告和复杂的CVSS评分体系&#xff0c;安全团队常常陷入“信息过载”的困境。一个典型的场景是&#xff1a;某位初级分析师需要判断一个新披露CVE的严重性&#xff0c;他必须翻阅《…

作者头像 李华
网站建设 2026/8/12 5:01:42

Langchain-Chatchat交互式应用安全测试(IAST)知识库

Langchain-Chatchat 构建 IAST 知识库的技术实践 在金融、医疗和政企系统中&#xff0c;安全文档的管理和利用始终是一大难题。渗透测试报告、合规规范、漏洞修复指南往往以非结构化形式分散在多个PDF或内部Wiki中&#xff0c;当开发人员需要快速获取某项安全建议时&#xff0c…

作者头像 李华
网站建设 2026/8/11 11:41:59

54、多线程编程中的同步、存储与异步模式解析

多线程编程中的同步、存储与异步模式解析 线程本地存储 在多线程编程中,同步锁的使用有时会带来性能和可扩展性方面的问题。例如在某些情况下,为特定数据元素提供同步可能过于复杂,尤其是在原始代码编写完成后再添加同步逻辑时。此时,隔离是一种替代同步的解决方案,而线…

作者头像 李华