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

Heroku部署Django时找不到settings模块但本地运行正常该如何解决?

问题原因

你本地运行wsgi.py时,执行路径是wsgi.py和settings.py所在的子目录,Python会自动将当前工作目录加入模块搜索路径,因此直接声明DJANGO_SETTINGS_MODULE = 'settings'可以正常识别。但Heroku部署后启动应用的工作目录是项目根目录(即包含manage.py的顶层目录),此时Python模块搜索路径未包含settings.py所在的子目录,因此抛出ModuleNotFoundError。

解决方法

你可以任选以下一种方案修复:

  • 方案1(推荐,符合Django官方规范):修改wsgi.py中的设置模块路径,加上settings.py所在的子目录名作为前缀。假设你的子目录名为myproject(可从你的项目目录结构中确认,即和wsgi.py同层级的父文件夹名),将对应行修改为:
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    
  • 方案2:在wsgi.py中主动将settings.py所在目录加入Python模块搜索路径,在设置DJANGO_SETTINGS_MODULE之前新增一行代码即可:
    import os
    import sys
    
    # 新增这一行,将wsgi.py所在目录加入搜索路径
    sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
    
    application = get_wsgi_application()
    

修改后重新推送部署即可,同时可以顺带检查项目根目录下的Procfile配置,确认web命令指向的wsgi应用路径正确,示例配置参考:

web: gunicorn myproject.wsgi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:15:04