You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Django项目到Heroku后出现找不到settings.py文件的报错

解决Django部署Heroku时找不到settings.py的问题

嘿,我之前也踩过这个坑!从你提供的报错日志来看,核心问题是Django在加载配置时找不到指定的settings模块——本质是DJANGO_SETTINGS_MODULE环境变量配置错误,或者项目路径没被Python正确识别。下面是一步步的排查和解决方法:

1. 先确认你的项目结构

从日志里的路径/app/django_structure/src/django_structure/wsgi.py来看,你的settings.py应该和wsgi.py在同一个目录下,也就是/app/django_structure/src/django_structure/里。对应的Python模块路径应该是django_structure.settings(只要src目录被加入Python路径,里面的django_structure就是可导入的模块)。

2. 配置Heroku环境变量

最稳妥的方式是通过Heroku环境变量指定settings模块:

  • 打开终端,运行这个命令:
    heroku config:set DJANGO_SETTINGS_MODULE=django_structure.settings
    
    这个命令会在Heroku服务器上设置环境变量,明确告诉Django去哪里找你的配置文件。

3. 检查Procfile的正确性

Procfile是Heroku启动应用的核心配置文件,要确保里面的gunicorn命令指向正确的wsgi模块,同时把src目录加入Python路径(如果你的settings在src下的话)。比如你的Procfile应该写成这样:

web: PYTHONPATH=src gunicorn django_structure.wsgi --log-file -

这里PYTHONPATH=src会让Python把src目录当成模块搜索路径,这样就能顺利找到django_structure.wsgi模块了。

4. 手动在wsgi.py里指定settings路径(应急方案)

如果环境变量设置后还是不行,可以直接在wsgi.py里硬编码配置路径(虽然不推荐长期这么用,但能快速验证问题):

import os
# 替换成你正确的settings模块路径
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_structure.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

5. 验证本地环境是否正常

先在本地跑一下,确保DJANGO_SETTINGS_MODULE设置正确:

export DJANGO_SETTINGS_MODULE=django_structure.settings
python manage.py runserver

如果本地能正常启动,那部署到Heroku时的问题大概率就是环境变量或Procfile的配置问题。

一般来说,按照上面的步骤调整后,这个找不到settings的报错就会消失啦!

内容的提问来源于stack exchange,提问作者Frank Gilmor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:01:28