Windows下GDAL3.6安装后Django运行manage.py check报WinError127
解决Django+GDAL WinError 127问题
以下是针对该问题的具体解决步骤:
1. 排查版本兼容性
- Python 3.12需搭配Django 4.2及以上版本,先确认你的Django版本是否达标。
- GDAL 3.6需与Django GIS模块版本匹配,版本不兼容会导致函数调用失败。
2. 补全OSGeo4W组件
重新运行OSGeo4W安装器,选择高级安装模式,确保勾选以下组件:
gdal(核心库)gdal-python(GDAL的Python绑定)- 若通过OSGeo4W安装Django,需勾选对应版本的
django,避免pip安装的Django与OSGeo4W环境冲突。
3. 配置环境变量
将OSGeo4W的bin目录(如C:\OSGeo4W\bin)添加到系统PATH的最顶部,确保系统优先调用该目录下的GDAL库。同时添加以下环境变量:
GDAL_DATA:指向C:\OSGeo4W\share\gdalPROJ_LIB:指向C:\OSGeo4W\share\proj
注意:设置完环境变量后必须重启命令行或IDE才能生效
4. 修复Python绑定路径
在你的Python site-packages目录(即日志中django.contrib.gis所在的目录)下新建osgeo4w.pth文件,写入OSGeo4W的bin目录路径,保存后重启Python环境,让Django能正确找到GDAL库。
5. 更换Python版本
你当前使用的是Microsoft Store版Python,这类版本容易出现环境权限和路径冲突问题。建议卸载该版本,改用Python官网下载的标准安装包,安装时勾选“Add Python to PATH”选项,再重新配置GDAL和Django环境。
附原始问题报错
运行django manage.py check时出现报错:
File "C:\users\rodri\dev\mymap\.mymap\Lib\site-packages\django\contrib\gis\gdal\libgdal.py", line 69, in <module> lgdal = CDLL(lib_path) ^^^^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.752.0_x64__qbz5n2kfra8p0\Lib\ctypes\__init__.py", line 379, in __init__ self._handle = _dlopen(self._name, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^ OSError: [WinError 127] 找不到指定的程序。
完整报错日志:
... File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\admin\apps.py", line 27, in ready self.module.autodiscover() File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\admin\__init__.py", line 50, in autodiscover autodiscover_modules("admin", register_to=site) File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\utils\module_loading.py", line 58, in autodiscover_modules import_module("%s.%s" % (app_config.name, module_to_search)) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.752.0_x64__qbz5n2kfra8p0\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\admin\__init__.py", line 14, in <module> from django.contrib.gis.admin.options import GeoModelAdmin, GISModelAdmin, OSMGeoAdmin File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\admin\options.py", line 4, in <module> from django.contrib.gis.admin.widgets import OpenLayersWidget File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\admin\widgets.py", line 5, in <module> from django.contrib.gis.gdal import GDALException File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\gdal\__init__.py", line 28, in <module> from django.contrib.gis.gdal.datasource import DataSource File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\gdal\datasource.py", line 40, in <module> from django.contrib.gis.gdal.driver import Driver File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\gdal\driver.py", line 5, in <module> from django.contrib.gis.gdal.prototypes import ds as vcapi File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\gdal\prototypes\ds.py", line 9, in <module> from django.contrib.gis.gdal.libgdal import lgdal File "C:\Users\rodri\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\django\contrib\gis\gdal\libgdal.py", line 71, in <module> lgdal = CDLL(lib_path) ^^^^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.752.0_x64__qbz5n2kfra8p0\Lib\ctypes\__init__.py", line 379, in __init__ self._handle = _dlopen(self._name, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^ OSError: [WinError 127] 找不到指定的程序。
内容的提问来源于stack exchange,提问作者rdrgtec
相关产品推荐
相关产品推荐

