news 2026/5/1 10:02:57

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/5/1 8:49:40

Langchain-Chatchat保险理赔流程知识问答系统

Langchain-Chatchat保险理赔流程知识问答系统 在保险公司日常运营中&#xff0c;一个常见的场景是&#xff1a;客户打电话咨询“我车撞了护栏&#xff0c;能赔吗&#xff1f;”客服人员立刻翻出几百页的《车险理赔指南》PDF&#xff0c;逐章查找责任条款、事故类型说明和材料清…

作者头像 李华
网站建设 2026/4/30 19:18:44

Langchain-Chatchat模糊测试(Fuzzing)知识问答系统

Langchain-Chatchat模糊测试&#xff08;Fuzzing&#xff09;知识问答系统 在企业日益依赖人工智能进行内部决策支持的今天&#xff0c;一个看似智能的知识助手突然因一段异常输入而崩溃——这不仅影响用户体验&#xff0c;更可能暴露系统深层的安全隐患。尤其当这套系统承载着…

作者头像 李华
网站建设 2026/4/23 7:36:42

Langchain-Chatchat XSS跨站脚本防护问答工具

Langchain-Chatchat XSS跨站脚本防护问答工具 在企业知识管理日益智能化的今天&#xff0c;越来越多组织开始尝试将大型语言模型&#xff08;LLM&#xff09;引入内部系统&#xff0c;用于政策查询、技术答疑和文档检索。然而&#xff0c;一个现实问题摆在面前&#xff1a;如何…

作者头像 李华
网站建设 2026/4/20 20:00:02

滚柱导轨中的密封件如何判断是否需更换?

滚柱导轨在自动化领域中是常用的传动元件&#xff0c;被广泛应用于重型机床、自动化生产线与精密仪器中。其中导轨中的密封件对设备稳定运行至关重要&#xff0c;若密封件失效&#xff0c;杂质或灰尘侵入会加速导轨磨损。那么&#xff0c;怎样判断滚柱导轨的密封件是否需要更换…

作者头像 李华
网站建设 2026/5/1 8:39:26

Langchain-Chatchat漏洞库智能查询工具开发

Langchain-Chatchat漏洞库智能查询工具开发 在网络安全响应日益紧迫的今天&#xff0c;安全团队常常面临一个尴尬的局面&#xff1a;面对突发漏洞&#xff0c;明明知道相关信息就在某份PDF补丁说明或技术公告里&#xff0c;却要花费数小时翻找文档、交叉比对。传统的关键词搜索…

作者头像 李华
网站建设 2026/5/1 9:59:07

什么是销售漏斗?一次说清线索转化、商机管理的底层逻辑

先说一句可能有点扎心的话。90% 的企业嘴上在说“我们有销售漏斗”&#xff0c;实际上只是给 CRM 里加了几个状态字段。实际上&#xff1a;线索从哪来&#xff0c;说不清商机为什么卡住&#xff0c;没人知道成单率低&#xff0c;只能怪销售不给力今天这篇文章&#xff0c;我不打…

作者头像 李华