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

Django存储地址经纬度遇PROJ.db缺失错误求助

解决Windows下Django PointField找不到proj.db的问题

问题根源

报错提示找不到proj.db,是因为PROJ坐标转换依赖库无法定位到其核心数据库文件,而你的Django配置仅指定了GEOS和GDAL的库路径,未配置PROJ相关环境变量。

解决方案

1. 定位proj.db文件

在虚拟环境目录下,找到Lib/site-packages/osgeo文件夹,确认其中存在proj.db文件。如果找不到,说明GDAL/PROJ包安装不完整,需重新安装(推荐下载对应Python版本的GDAL、GEOS、PROJ whl文件进行安装)。

2. 修改settings.py配置

在现有配置基础上,添加PROJ库路径的环境变量配置,同时用os.path.join避免路径拼接错误:

import os
VIRTUAL_ENV_BASE = os.environ.get('VIRTUAL_ENV')

# 配置GEOS、GDAL库路径
GEOS_LIBRARY_PATH = os.path.join(VIRTUAL_ENV_BASE, 'Lib', 'site-packages', 'osgeo', 'geos_c.dll')
GDAL_LIBRARY_PATH = os.path.join(VIRTUAL_ENV_BASE, 'Lib', 'site-packages', 'osgeo', 'gdal304.dll')

# 配置PROJ库路径(关键)
os.environ['PROJ_LIB'] = os.path.join(VIRTUAL_ENV_BASE, 'Lib', 'site-packages', 'osgeo')

3. 明确Point的SRID(可选但推荐)

创建Point对象时指定SRID为4326(地图API返回的经纬度通常采用WGS84坐标系),减少不必要的坐标转换:

# 修改models.py中save方法的Point创建代码
self.point = Point(lng, lat, srid=4326)

4. 验证配置

重启Django服务后再次尝试保存数据,若仍报错,检查以下内容:

  • 虚拟环境路径是否正确(通过print(VIRTUAL_ENV_BASE)输出确认)
  • osgeo文件夹下确实存在proj.db、geos_c.dll、gdal304.dll文件
  • 配置的GDAL动态库版本与实际安装版本一致(如安装的是GDAL305,需改为gdal305.dll)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:29