在AWS EC2部署Django3时遇ModuleNotFoundError: No module named 'django.utils.six.moves'
解决Django 3部署时
django.utils.six.moves找不到的问题 错误原因
你遇到的ModuleNotFoundError: No module named 'django.utils.six.moves',根本原因是Django 3已经移除了自带的six兼容模块,但当前使用的django-storages版本太旧,仍在调用Django内置的six路径,和单独安装/卸载six包无关。
错误日志
May 22 17:06:33 ip-172-31-7-56 gunicorn[73506]: from storages.backends.s3boto3 import S3Boto3Storage May 22 17:06:33 ip-172-31-7-56 gunicorn[73506]: File "/home/ubuntu/lighthousemedia/.venv/lib/python3.12/site-packages/storages/backends/s3boto3.py", line 12> May 22 17:06:33 ip-172-31-7-56 gunicorn[73506]: from django.utils.six.moves.urllib import parse as urlparse May 22 17:06:33 ip-172-31-7-56 gunicorn[73506]: ModuleNotFoundError: No module named 'django.utils.six.moves'
解决方案
升级django-storages到兼容版本
先激活项目的虚拟环境,再执行升级命令:source /home/ubuntu/lighthousemedia/.venv/bin/activate pip install --upgrade django-storages从
django-storages 1.10版本开始,已移除对django.utils.six的依赖,适配Django 3+。锁定依赖版本(可选)
如果项目用requirements.txt管理依赖,添加或修改以下内容,避免后续安装旧版本:django-storages>=1.10重启服务生效
升级完成后,重启gunicorn服务:sudo systemctl restart gunicorn
内容的提问来源于stack exchange,提问作者Rahul Verma
相关产品推荐
相关产品推荐

