当前位置: 首页 > news >正文

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 工程更主流、也更稳定的选择。”

http://www.cnnetsun.cn/news/163262.html

相关文章:

  • 9大高级RAG技术详解:提升大模型检索效果的实战指南
  • Langchain-Chatchat移动设备安全管理知识库
  • Langchain-Chatchat JWT令牌机制知识库构建
  • Langchain-Chatchat文件共享权限管理问答系统
  • Langchain-Chatchat IOC指标查询问答工具
  • Langchain-Chatchat渗透测试报告生成辅助工具
  • 50、多线程编程:任务控制与并行迭代
  • 51、多线程编程全解析
  • ML Workspace终极指南:5分钟搭建专业级机器学习环境
  • Langchain-Chatchat DevOps运维知识整合实践
  • Jetpack Compose响应式布局实战:构建自适应多屏Android应用
  • 端侧AI部署技术深度解析:从架构原理到行业实战
  • 30、构建安全、高效的企业级Web农场与数据仓库
  • Langchain-Chatchat数据安全法解读知识检索工具
  • React-Move 动画库终极指南:从入门到精通的完整实践手册
  • xPack OpenOCD 安装配置完全指南:快速搭建嵌入式调试环境
  • Langchain-Chatchat嵌入模型本地化部署要点
  • Proton-GE Wayland完全指南:解锁原生Linux游戏体验
  • Zed编辑器插件生态:完整指南与开发实战
  • CppMicroServices 终极指南:5步掌握C++模块化开发
  • SVG转Canvas渲染引擎终极指南:从零到精通的完整教程
  • Browser-Use Web-UI完全指南:让AI智能体在浏览器中自主工作的终极方案
  • Langchain-Chatchat科研辅助系统构建:论文资料智能问答平台
  • FastAPI蓝绿部署实战指南:实现零停机更新
  • Langchain-Chatchat能否支持视频文档解析?多媒体处理展望
  • 如何在3天内用TFLearn构建医疗AI预测模型:完整指南
  • 【第1章·第8节】自适应MPC控制器的simulink建模与仿真
  • C# 简介
  • S3Proxy加密机制深度解析:透明安全的云端数据保护方案
  • 如何用NixOS和Hyprland构建终极Linux桌面:完整配置指南