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

Django项目部署Heroku报错:与Python Buildpack不兼容求助

问题拆解与解决方案

看起来你踩了Heroku部署Django时两个典型的坑——文件层级不符合检测规则,再加上依赖版本冲突且不兼容,这才导致了buildpack识别失败的错误。我来帮你一步步解决:

核心问题分析

1. 项目文件放错了位置

Heroku的Python buildpack是从你的Git仓库根目录查找requirements.txt、Pipfile这类标识文件来识别Python项目的。但从你的目录结构来看,manage.py、Pipfile这些核心文件都藏在了内层的my-project子目录里(和.git同级的是外层my-project),buildpack根本找不到它们,自然会判定项目“不兼容”。

2. 依赖版本存在严重问题

  • 你使用的是Python2.7,但Pipfile里指定了django==2.0——Django2.0及以上版本完全不支持Python2.7,仅兼容Python3.5+,这会直接导致部署失败
  • Pipfile和requirements.txt里的Django版本还不一致(一个2.0,一个1.8.18),Heroku会优先使用Pipfile/Pipfile.lock,这种版本冲突必然引发依赖安装问题

具体修复步骤

第一步:调整核心文件的位置

把内层my-project目录下的manage.py、Pipfile、Procfile、requirements.txt、runtime.txt、.env这些文件,全部移动到和.git文件夹同级的位置(也就是外层my-project目录下)。调整后的目录结构应该是这样:

-- .git/
-- my-project/       # 保留原来的内层app目录及子应用
---- some-app-dir/
---- some-app-dir/
---- __init__.py
-- .env
-- db.sqlite3
-- manage.py
-- Pipfile
-- Pipfile.lock
-- Procfile
-- requirements.txt
-- runtime.txt

第二步:修正Procfile的WSGI路径

原来的Procfile写的是web: gunicorn py-mosaic-image.wsgi --log-file -,现在需要改成你实际的项目WSGI模块路径。假设你的内层app目录叫my-project,修改后的Procfile应该是:

web: gunicorn my-project.wsgi --log-file -

第三步:统一并修正依赖版本

因为你使用Python2.7,只能选择Django 1.x系列(最高1.11.x,这是支持Python2.7的最后一个Django大版本):

  1. 编辑Pipfile,把Django版本改成兼容的:
[packages]
dj-database-url = "==0.4.2"
django = "==1.11.29"  # 选择Python2.7兼容的最新Django1.11版本
gunicorn = "==19.7.1"
"psycopg2" = "==2.7.3.2"
whitenoise = "==3.3.1"
  1. 要么同步requirements.txt的版本,要么直接删除它(Heroku会优先使用Pipfile/Pipfile.lock),避免版本冲突
  2. 重新生成Pipfile.lock:
pipenv lock

第四步:重新部署

把所有修改提交到Git,然后push到Heroku:

git add .
git commit -m "Fix project structure and dependency issues for Heroku deploy"
git push heroku master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:13