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

部署GeoDjango到Heroku遇python setup.py egg_info及GDAL错误求助

解决GeoDjango部署Heroku的GDAL相关错误

核心问题分析

  • GDAL版本不兼容:GDAL 2.4.2是旧版本,不支持Python3.8+,且其setup.py中使用的use_2to3配置在新版setuptools中已被移除,直接导致egg_info生成失败
  • numpy依赖顺序异常:GDAL编译过程需要numpy提前就绪,但pip默认依赖解析顺序可能让GDAL先于numpy安装,触发"numpy not available"警告

具体修复步骤

1. 升级GDAL版本并调整依赖顺序

修改requirements.txt,替换旧版GDAL并明确numpy的前置依赖:

# 移除旧版本
# GDAL==2.4.2
# 添加兼容版本,确保numpy先被安装
numpy==1.21.6
GDAL==3.4.3

注:GDAL 3.4.x支持Python3.7-3.10,与你使用的Python3.9.13完全兼容,且已移除对use_2to3的依赖

2. 清理无用依赖

删除requirements.txt中的pipwin==0.5.2,该工具仅适用于Windows环境,Heroku是Linux环境,无实际作用还可能干扰依赖安装流程

3. 修正Heroku Buildpack顺序

确保Heroku Geo Buildpack是第一个被加载的Buildpack,Python Buildpack紧随其后,执行以下命令:

heroku buildpacks:clear
heroku buildpacks:add https://github.com/heroku/heroku-geo-buildpack.git
heroku buildpacks:add heroku/python

此操作能保证系统级GDAL库先于Python包安装,避免编译时找不到依赖的问题

4. 验证Geo依赖版本匹配

当前djangorestframework-gis==1.0兼容Django3.2.x和GDAL3.x,无需修改;若后续出现兼容性报错,可升级至djangorestframework-gis==1.2

5. 重新部署

更新配置后提交代码并推送:

git add requirements.txt
git commit -m "Fix GDAL compatibility issues for Heroku deployment"
git push heroku main

验证修复结果

部署完成后,可通过以下命令确认GDAL和numpy正常工作:

heroku run python -c "import gdal; import numpy; print(f'GDAL版本: {gdal.__version__}, numpy版本: {numpy.__version__}')"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:39:21