Python3.11运行Flask项目报错:collections无MutableSequence属性
报错原因
Python 3.10及以上版本将collections.MutableSequence等抽象基类迁移到了collections.abc模块,而旧版flask_navigation未适配这一变更,导致在Python 3.11中运行时触发AttributeError。
可行解决方案
1. 降级Python到3.9.x(最快最省心的方案)
既然项目在Python 3.9.1中能正常运行,直接给项目切换到Python 3.9的虚拟环境即可:
# 安装Python 3.9及虚拟环境工具 sudo apt update && sudo apt install python3.9 python3.9-venv # 进入项目目录,创建基于Python3.9的虚拟环境 python3.9 -m venv venv39 # 激活虚拟环境 source venv39/bin/activate # 重新安装项目依赖 pip install -r requirements.txt
之后用这个虚拟环境运行python app.py即可恢复正常。
2. 修改flask_navigation包的代码(适配Python 3.11)
只改import collections为import collections.abc没用,需要修正引用路径:
- 定位到虚拟环境中的flask_navigation目录:
/root/valorant-hours-played/venv/lib/python3.11/site-packages/flask_navigation/ - 编辑
item.py文件:- 将顶部的
import collections替换为:from collections.abc import MutableSequence - 同时把类定义行的
collections.MutableSequence改为MutableSequence
或者另一种方式,保留原有代码结构:
import collections.abc as collections - 将顶部的
- 检查其他文件(如
navbar.py、api.py等),如果有使用collections下的抽象基类(比如MutableMapping等),按同样方式修改。
注意:这种修改是临时的,下次重新安装
flask_navigation会被覆盖,建议修改后将包本地安装,或者使用fork后的版本。
3. 升级或替换flask_navigation
- 先尝试升级包,看是否有适配Python 3.10+的版本:
pip install --upgrade flask_navigation - 如果升级后问题依旧,说明该包可能已停止维护,可以考虑替换为其他活跃维护的Flask导航扩展,比如
flask-menu,或者自己实现简单的导航逻辑。
内容的提问来源于stack exchange,提问作者Pyro
相关产品推荐
相关产品推荐

