Windows虚拟环境中django-admin --version报错,如何解决?
解决Django 1.9与Python 3.11的兼容报错问题
问题原因
Django 1.9是2015年发布的老旧版本,仅支持Python 2.7、3.4、3.5版本,完全不兼容Python 3.11。报错中的ImportError是因为Python 3.10及以上版本将Iterator、Mapping等抽象基类从collections模块迁移到了collections.abc模块,而Django 1.9的代码仍在从旧路径导入这些类。
解决方案
方案一:降级Python到兼容版本(推荐)
这是最稳妥的解决方式,完全匹配Django 1.9的官方支持环境:
- 退出当前虚拟环境:
deactivate - 删除现有虚拟环境文件夹:直接删除
C:\Users\DELL\env - 安装Python 3.5(可从Python官方渠道下载对应Windows版本)
- 创建基于Python 3.5的新虚拟环境:
python3.5 -m venv new_env - 激活新虚拟环境:
new_env\Scripts\activate - 重新安装Django 1.9:
pip install django==1.9 - 执行
django-admin --version即可正常显示版本号。
方案二:修改Django源码临时兼容(不推荐)
仅作为临时测试用,后续使用中可能出现更多兼容问题:
- 找到报错文件:
C:\Users\DELL\env\Lib\site-packages\django\db\models\sql\query.py - 打开文件,将第11行的导入代码修改为:
from collections import Counter, OrderedDict from collections.abc import Iterator, Mapping - 保存文件后,重新执行
django-admin --version即可临时解决该报错。
内容的提问来源于stack exchange,提问作者Gurpreet Singh Grover
相关产品推荐
相关产品推荐

