You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python报错:ImportError: cannot import name 'Mapping' from 'collections'

解决Python3.11运行适配3.6的项目时Jinja2导入报错问题

问题根源

Python 3.10及以上版本中,collections.Mapping被迁移到collections.abc.Mapping,但项目依赖的旧版Jinja2仍在使用旧的导入路径,导致报错。直接升级Jinja2又会和项目其他依赖冲突,可尝试以下几种解决方法:


方案一:使用Python3.6虚拟环境(最稳妥)

这是最贴合项目适配环境的方案,彻底避免版本兼容问题:

  • 安装Python3.6版本(Windows可从Python官网归档区获取对应系统安装包)
  • 在项目目录下创建Python3.6专属虚拟环境:
    # Windows
    py -3.6 -m venv virt_mgpdm
    # Linux/macOS
    python3.6 -m venv virt_mgpdm
    
  • 激活虚拟环境:
    # Windows
    virt_mgpdm\Scripts\activate
    # Linux/macOS
    source virt_mgpdm/bin/activate
    
  • 重新安装项目依赖:
    pip install -r requirements.txt
    
  • 再运行python app.py即可正常启动

方案二:修改Jinja2源码临时修复

不想更换Python版本的话,可直接修改Jinja2的导入语句:

  • 找到报错提示中的jinja2/tests.py文件,路径为:C:\Users\p\Desktop\Movie-Genre-Prediction-Deployment-master\virt_mgpdm\Lib\site-packages\jinja2\tests.py
  • 打开文件,将第13行的:
    from collections import Mapping
    
    修改为:
    from collections.abc import Mapping
    
  • 若后续出现其他类似collections相关导入错误(如Iterable、KeysView等),统一改成从collections.abc导入
  • 保存文件后重新运行项目

方案三:锁定兼容的Jinja2版本

尝试找一个既能适配Python3.11,又尽量兼容项目旧依赖的Jinja2版本:

  • 先卸载当前Jinja2:
    pip uninstall jinja2 -y
    
  • 安装Jinja2 2.11.3版本(这个版本是旧版分支中较稳定的,修改导入后可适配Python3.11):
    pip install jinja2==2.11.3
    
  • 之后按照方案二的方法修改tests.py中的导入语句,即可兼顾版本兼容和项目运行

内容的提问来源于stack exchange,提问作者S.T.A.Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:52:36