升级Python 3.10后启动shell报AttributeError: collections无MutableMapping属性错误
错误原因
Python 3.10 正式移除了collections模块下对抽象基类别名的兼容支持,这类抽象基类早在Python 3.3就已经迁移到collections.abc子模块下。你遇到的报错是因为当前虚拟环境中安装的requests库版本较低,仍在调用已被移除的collections.MutableMapping属性,和Django版本无关。
从堆栈信息可以看到,报错是在Django shell默认调用bpython交互式终端时,bpython依赖的requests库触发的兼容问题。
解决方案
方案1:升级兼容Python3.10的依赖包(推荐)
激活项目虚拟环境后依次执行以下命令:
- 升级requests到最新兼容版本:
pip install --upgrade requests - 同步升级bpython避免其他潜在兼容问题:
pip install --upgrade bpython
升级完成后再执行python manage.py shell即可正常启动。
方案2:临时使用Python原生shell绕过问题
如果暂时不想升级依赖,可以在启动shell时指定使用Python自带的交互式终端,避免触发bpython的加载逻辑:python manage.py shell --interface python
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

