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

GDAL导入DLL加载失败求助:Python环境与VS Code运行异常

GDAL导入DLL加载失败问题排查与解决建议

我已经花了一周时间解决GDAL导入时的DLL加载失败问题,试过各种方法都没用,以下是详细情况:

报错信息1:VS Code运行代码时的错误

Traceback (most recent call last):
  File "C:\Users\\anaconda3\envs\pygdal38\lib\site-packages\osgeo\__init__.py", line 29, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\\anaconda3\envs\pygdal38\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 657, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 556, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1166, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed while importing _gdal: 找不到指定的程序。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:/Users//Desktop/Python/começando true color.py", line 8, in <module>
    from remap import remap # Import the Remap function
  File "c:\Users\\Desktop\Python\remap.py", line 6, in <module>
    from osgeo import gdal
  File "C:\Users\\anaconda3\envs\pygdal38\lib\site-packages\osgeo\__init__.py", line 45, in <module>
    _gdal = swig_import_helper()
  File "C:\Users\\anaconda3\envs\pygdal38\lib\site-packages\osgeo\__init__.py", line 41, in swig_import_helper
    raise ImportError(traceback_string + '\n' + msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\\anaconda3\envs\pygdal38\lib\site-packages\osgeo\__init__.py", line 29, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\\anaconda3\envs\pygdal38\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 657, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 556, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1166, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed while importing _gdal: 找不到指定的程序。

On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH.
If gdalXXX.dll is in the PATH, then set the USE_PATH_FOR_GDAL_PYTHON=YES environment variable
to feed the PATH into os.add_dll_directory().

报错信息2:Anaconda命令行(Python 3.9.12)导入GDAL的错误

Python 3.9.12 (main, Apr  4 2022, 05:22:27) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from osgeo import gdal
Traceback (most recent call last):
  File "C:\Users\\anaconda3\lib\site-packages\osgeo\__init__.py", line 29, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 565, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1173, in create_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
ImportError: DLL load failed while importing _gdal: 找不到指定的模块。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\ire0052\anaconda3\lib\site-packages\osgeo\__init__.py", line 45, in <module>
    _gdal = swig_import_helper()
  File "C:\Users\ire0052\anaconda3\lib\site-packages\osgeo\__init__.py", line 41, in swig_import_helper
    raise ImportError(traceback_string + '\n' + msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\ire0052\anaconda3\lib\site-packages\osgeo\__init__.py", line 29, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\ire0052\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 565, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1173, in create_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
ImportError: DLL load failed while importing _gdal: 找不到指定的模块。

On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH.
If gdalXXX.dll is in the PATH, then set the USE_PATH_FOR_GDAL_PYTHON=YES environment variable
to feed the PATH into os.add_dll_directory().

已尝试的操作及结果

  • 最初认为是GDAL本身问题,通过conda卸载重装多次,无效。
  • 创建Python 3.8.13的新Anaconda环境,在命令行中导入GDAL无报错:
>>> from osgeo import gdal
>>>
  • 但在VS Code中运行目标代码时,同样的DLL加载错误再次出现。

解决建议

1. 确认VS Code使用的Python解释器

打开VS Code左下角的Python解释器选择器,确保选中的是你创建的Python 3.8.13 + GDAL的环境,而非默认的Python 3.9.12环境。

2. 设置环境变量USE_PATH_FOR_GDAL_PYTHON=YES

根据报错提示,Windows下Python 3.8+不再从PATH加载DLL,需设置环境变量:

  • 临时设置:在VS Code终端执行set USE_PATH_FOR_GDAL_PYTHON=YES,再运行代码。
  • 永久设置:右键“此电脑”→属性→高级系统设置→环境变量,在用户/系统变量中添加USE_PATH_FOR_GDAL_PYTHON,值设为YES,重启VS Code生效。

3. 手动添加GDAL DLL路径到Python的DLL目录

在代码开头添加以下代码(替换为你的GDAL DLL实际路径,比如C:\Users\<你的用户名>\anaconda3\envs\pygdal38\Library\bin):

import os
os.add_dll_directory(r"C:\Users\<你的用户名>\anaconda3\envs\pygdal38\Library\bin")
from osgeo import gdal

4. 确保GDAL与Python版本兼容

推荐通过conda-forge安装匹配Python 3.8.13的GDAL版本:

conda activate pygdal38
conda install -c conda-forge gdal

5. 清理VS Code缓存

关闭VS Code,备份后删除项目目录下.vscode文件夹中的settings.json,重新打开VS Code并选择正确解释器,再尝试运行代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:48:21