使用heroku/python buildpack部署Django到Heroku提示不兼容求助
问题根因
Heroku官方Python构建包会优先检测项目根目录是否存在Python项目的标识文件(包括requirements.txt、Pipfile、pyproject.toml任意一种),你当前项目的所有Django相关文件都存放在Meme_Site子目录下,根目录缺少构建包需要的检测文件,因此触发不兼容报错。
解决步骤
- 调整项目目录结构:把
Meme_Site子目录下的所有内容(包括manage.py、同名项目配置文件夹、静态文件目录、模板目录等)全部移动到仓库根目录,删除空的Meme_Site子目录,该方案对初学者更友好,可避免后续出现路径配置错误。 - 校验依赖文件:
- 确保根目录存在
requirements.txt,内容需包含所有项目依赖,必须添加gunicorn(Heroku运行Django所需的生产Web服务器)、whitenoise(静态文件托管)、dj-database-url(生产数据库配置)这几个Heroku部署必要依赖 - 如果你使用Pipenv或者Poetry做依赖管理,保证对应的
Pipfile/pyproject.toml放在根目录即可
- 确保根目录存在
- 新增Heroku专属配置文件:
- 根目录新建无后缀的
Procfile,内容填写:web: gunicorn Meme_Site.wsgi --log-file - - 根目录新建
runtime.txt,指定Heroku-20堆栈支持的Python版本,示例内容:python-3.10.12
- 根目录新建无后缀的
- 修改Django配置适配生产环境:
- 打开项目配置文件夹下的
settings.py,将你的Heroku应用域名添加到ALLOWED_HOSTS列表 - 配置静态文件参数:添加
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') - 引入whitenoise中间件处理静态资源请求
- 用dj-database-url替换默认的SQLite3数据库配置,适配Heroku的PostgreSQL数据库
- 打开项目配置文件夹下的
- 所有修改提交到Git后,重新执行推送到Heroku的操作即可正常触发构建。
内容的提问来源于stack exchange,提问作者Shadow_Knight
相关产品推荐
相关产品推荐

