Heroku部署Django应用遇ModuleNotFoundError: No module named 'six'求助
解决Heroku部署Django应用时的
six模块缺失问题 问题根源
2022年8月后Heroku的Python构建环境可能调整了依赖解析逻辑,或是远程构建时Pipfile.lock的依赖版本被重新解析,导致Django(尤其是旧版本)依赖的six包未被正确安装,即便本地Python 3.6.3.rc1环境运行正常。
可行解决方案
1. 锁定兼容的six版本并重新生成锁文件
避免直接pipenv install six引入不兼容版本,指定和本地环境匹配的版本:
pipenv install six==1.16.0
随后清理并重新生成锁文件,确保依赖版本一致:
pipenv lock --clear
本地测试运行正常后再推送至Heroku,可避免连锁问题。
2. 强制Heroku使用与本地一致的Python版本
在项目根目录创建或修改runtime.txt文件,写入:
python-3.6.3rc1
Heroku默认可能使用更新的Python版本,版本差异会导致依赖解析偏差,引发six缺失。
3. 清除Heroku构建缓存
回滚版本无效可能是缓存残留导致,推送时添加清除缓存参数:
git push heroku master:main --no-cache
(根据你的主分支名称替换master或main)
4. 检查Django与six的兼容性
旧版本Django(如1.x系列)对six依赖较强,若Django版本过旧,可尝试升级到兼容Python 3.6的稳定版本,同时确保six版本与之匹配。
操作提示
- 操作前备份Pipfile和Pipfile.lock,防止误操作引发更多问题。
- 每次修改后先在本地执行
pipenv run python manage.py runserver测试,确认无异常再推送。
内容的提问来源于stack exchange,提问作者Hukys
相关产品推荐
相关产品推荐

