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

macOS 12系统Python3运行GDAL脚本及导入osgeo模块报错求助

解决Python 3.11导入osgeo模块失败的问题

环境信息

  • macOS 12.6
  • Python 3.11.2
  • GDAL 3.6.3
  • Homebrew 4.0.10
  • 终端:Zsh

问题情况

  • 按指南安装GDAL时,针对Monterrey系统的Homebrew目录,执行了命令:
    python setup.py build_ext --gdal-config /opt/homebrew/Cellar/gdal/3.6.3/bin/gdal-config
  • 为Zsh添加了PATH路径:export PATH=$PATH:/Users/francescocretti/Library/Python/3.9/,但当前Python版本为3.11,重装后该目录仍为3.9
  • GDAL命令行工具正常运行,gdalinfo --version输出:GDAL 3.6.3, released 2023/03/07
  • 在Python 3.11 shell中执行import osgeo时,出现报错:
    Traceback (most recent call last):
      File "/Users/francescocretti/GDAL/GDAL-3.6.3/osgeo/__init__.py", line 30, in swig_import_helper
        return importlib.import_module(mname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/Cellar/python@3.11/3.11.2_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
    ModuleNotFoundError: No module named 'osgeo._gdal'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/francescocretti/GDAL/GDAL-3.6.3/osgeo/__init__.py", line 46, in <module>
        _gdal = swig_import_helper()
                ^^^^^^^^^^^^^^^^^^^^
      File "/Users/francescocretti/GDAL/GDAL-3.6.3/osgeo/__init__.py", line 43, in swig_import_helper
        return importlib.import_module('_gdal')
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/Cellar/python@3.11/3.11.2_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
    ModuleNotFoundError: No module named '_gdal'
    

解决方案

1. 清理干扰性PATH配置

打开Zsh配置文件~/.zshrc,删除之前添加的export PATH=$PATH:/Users/francescocretti/Library/Python/3.9/,保存后执行source ~/.zshrc使修改生效。这条路径指向Python 3.9的目录,会打乱Python 3.11的模块查找逻辑。

2. 用Python 3.11的pip重新安装GDAL绑定

  • 先卸载可能残留的旧版本:
    pip3 uninstall -y gdal
  • 指定Homebrew的gdal-config安装对应版本,确保用的是Python 3.11的pip:
    pip3 install --global-option=build_ext --global-option="--gdal-config=/opt/homebrew/Cellar/gdal/3.6.3/bin/gdal-config" gdal==3.6.3

    提示:如果pip3不是指向Python 3.11,直接用Python 3.11的完整路径执行,比如/opt/homebrew/Cellar/python@3.11/3.11.2_1/bin/pip3

3. 验证安装路径

执行pip3 show gdal,查看Location字段,确认路径是Python 3.11的site-packages目录(比如/opt/homebrew/lib/python3.11/site-packages),而非Python 3.9的目录。

4. 测试导入有效性

重新打开Python shell,执行import osgeo,无报错则安装成功。如果仍有问题,检查Python的模块搜索路径:

import sys
print(sys.path)

确保输出中包含GDAL绑定所在的site-packages目录,且没有Python 3.9的干扰路径。

备选方案:直接用Homebrew安装绑定

如果手动编译安装太繁琐,可直接用Homebrew安装适配版本的GDAL Python绑定:
brew install gdal-python
安装完成后,执行python3 -c "import osgeo; print(osgeo.__version__)"验证是否输出3.6.3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:43:08