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

在Heroku部署GeoDjango应用时遭遇GDAL未找到错误求助

解决Heroku上GeoDjango提示找不到GDAL的问题

我之前部署GeoDjango到Heroku时也踩过这个坑!虽然构建包日志显示GDAL、GEOS这些库已经装好了,但Django就是找不到它们——核心原因是Django没法自动识别Heroku构建包安装的库路径,得手动帮它指清楚。

试试下面这几个步骤:

1. 设置Heroku环境变量

首先通过Heroku CLI把库的路径配置到环境变量里,让Django能读到:

heroku config:set GDAL_LIBRARY_PATH=/app/.heroku/vendor/lib/libgdal.so
heroku config:set GEOS_LIBRARY_PATH=/app/.heroku/vendor/lib/libgeos_c.so
heroku config:set PROJ_LIBRARY_PATH=/app/.heroku/vendor/lib

2. 修改Django的settings.py

在你的settings文件里,添加针对Heroku的GeoDjango配置,读取上面的环境变量:

import os

# 其他配置...

# 针对Heroku的Geo库路径配置
if os.environ.get('HEROKU'):
    GDAL_LIBRARY_PATH = os.environ.get('GDAL_LIBRARY_PATH')
    GEOS_LIBRARY_PATH = os.environ.get('GEOS_LIBRARY_PATH')
    PROJ_LIBRARY_PATH = os.environ.get('PROJ_LIBRARY_PATH')

另外别忘了先设置HEROKU环境变量,用来区分生产和开发环境:

heroku config:set HEROKU=1

3. 检查构建包顺序

Geo构建包必须是第一个执行的,不然Python构建包先跑的话,会找不到Geo库。用下面的命令查看当前构建包顺序:

heroku buildpacks

如果geo构建包不在第一位,用这个命令调整:

heroku buildpacks:add --index 1 https://github.com/cyberdelia/heroku-geo-buildpack.git

4. 别在requirements.txt里加gdal

注意!不要把gdal放进requirements.txt里——Heroku的geo构建包已经提供了这个库,手动加的话会导致版本冲突,反而让Django找不到正确的库文件。

做完这些步骤后,重新推送代码到Heroku,应该就能解决找不到GDAL的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:18:22