GeoDjango安装报错:找不到gdal304.dll或其依赖项
问题描述
在64位Windows10系统安装OSGeo4W后,配置Django的settings.py时设置了GDAL_LIBRARY_PATH = "C:\\OSGeo4W\\bin\\gdal304.dll",但仍出现报错:
FileNotFoundError: Could not find module 'C:\OSGeo4W\bin\gdal304.dll' (or one of its dependencies). Try using the full path with constructor syntax.
确认C:\OSGeo4W\bin路径下存在该dll文件,当前环境为Python3.10.6、Django4.1。
解决方案
优先使用OSGeo4W Shell运行Django
OSGeo4W自带的Shell会自动配置所有依赖的环境变量(包括PATH、GDAL_DATA等),直接打开该Shell,切换到Django项目目录,运行python manage.py runserver,大概率能解决依赖找不到的问题。手动配置环境变量到Django项目
如果不想用OSGeo4W Shell,在settings.py的最顶部添加以下代码,确保Python进程能找到GDAL的依赖库:import os # 把OSGeo4W的bin目录加入系统PATH os.environ['PATH'] = 'C:\\OSGeo4W\\bin;' + os.environ['PATH'] # 可选:指定GDAL_DATA和PROJ_LIB路径,避免后续其他GDAL相关报错 os.environ['GDAL_DATA'] = 'C:\\OSGeo4W\\share\\gdal' os.environ['PROJ_LIB'] = 'C:\\OSGeo4W\\share\\proj'注意要把这段代码放在所有Django导入语句之前。
验证GDAL Python绑定是否正常
打开OSGeo4W Shell,输入python进入交互环境,执行:from osgeo import gdal print(gdal.__version__)如果能正常输出版本号,说明GDAL的Python绑定没问题,问题出在Django启动时的环境配置;如果报错,说明OSGeo4W安装时没装对应Python版本的GDAL绑定,需要重新运行OSGeo4W安装器,选择
python310-gdal(对应Python3.10)包进行安装。检查文件权限
确保当前用户对C:\OSGeo4W目录有读取权限,避免因为权限问题导致dll无法加载。
内容的提问来源于stack exchange,提问作者Henrik

