部署Django应用至Heroku遇ModuleNotFoundError问题求助
解决Django部署Heroku时
ModuleNotFoundError: No module named 'dashboard_app.settings'的问题 我来帮你一步步排查这个问题!本地正常但Heroku部署出错,通常都是目录结构、Git提交或者Heroku环境配置的小细节问题,我们逐一解决:
1. 确认dashboard_app的模块标识有效性
Python需要目录里存在__init__.py才能将其识别为可导入的模块。你重命名应用目录后,会不会漏掉了这个文件?
- 检查本地
dashboard_app目录,确保里面有一个空白的__init__.py文件 - 用
git status确认这个文件已被提交到Git,否则Heroku拉取代码时会缺失该文件,导致无法识别模块
2. 核对项目目录结构是否合规
你的目录结构必须符合Django标准(manage.py在项目根目录,dashboard_app是它的直接子目录),示例结构如下:
你的项目根目录/ ├── manage.py ├── dashboard_app/ │ ├── __init__.py │ ├── settings.py │ ├── wsgi.py │ ├── urls.py │ └── ...(其他应用文件) ├── requirements.txt └── Procfile
如果manage.py不在根目录,或者dashboard_app嵌套在其他子目录里,Heroku就会找不到目标模块。
3. 检查Heroku的环境配置与依赖
- 确认你已在Heroku上正确设置
PRODUCTION环境变量:heroku config:set PRODUCTION=True - 检查
requirements.txt是否包含所有必要依赖(比如Django、whitenoise等),且该文件已提交到Git。Heroku完全依赖这个文件安装环境,缺少依赖会引发各类导入错误。
4. 直接在Heroku容器内调试(最有效排查方式)
通过远程容器可以直观看到Heroku上的实际环境:
- 进入Heroku远程容器:
heroku run bash - 查看目录结构,确认
dashboard_app存在:ls -la - 尝试手动导入settings模块,获取精准报错:
python -c "import dashboard_app.settings" - 也可以手动执行
collectstatic命令,观察实时错误:python manage.py collectstatic --noinput
5. 确认Git提交内容完整
有时候本地文件未被Git跟踪,导致Heroku上缺失对应文件:
- 用
git log确认最近的提交包含dashboard_app目录的所有文件 - 如果存在未提交的文件,执行
git add .和git commit -m "补充应用文件"后,重新部署到Heroku
如果以上步骤仍未解决问题,可以提供Heroku的构建日志或容器内的目录结构信息,我再帮你进一步分析!
内容的提问来源于stack exchange,提问作者Dim17300
相关产品推荐
相关产品推荐

