我知道有人在其他地方问过这个问题,但我找不到适合我环境的解决方案:
- macOS 12.6
- Python 3.11.2
- 简体中文
- Homebrew 4.0.10
我也在使用ZSH。
我设法正确地安装GDAL(显然)以下指南:https://mits003.github.io/studio_null/2021/07/install-gdal-on-macos/
在 Monterey ,我的Homerew酒窖在/opt/homebrew
下,所以我将说明改为:
python setup.py build_ext --gdal-config /opt/homebrew/Cellar/gdal/3.6.3/bin/gdal-config
我还必须在zsh PATH中添加一个条目来正确定位Python脚本,因为在macOS 12上这也是不同的(在/Users/username/Library/Python
中而不是/library/Python
中)
export PATH=$PATH:/Users/francescocretti/Library/Python/3.9/
在这一点上,3.9
版本听起来并不正确,因为我当前的Python版本是3.11
,但即使重新安装Python 3.11,这个文件夹仍然保持不变。
所以我运行GDAL python脚本无论如何他们工作。事实上,如果我用gdalinfo --version
检查GDAL版本,我会得到GDAL 3.6.3, released 2023/03/07
。
问题是,如果我尝试在python 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)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_gdal'
我怀疑它与Python版本冲突有关,但我无法解决这个问题。
有什么建议吗?:)
先谢谢你了
1条答案
按热度按时间yyhrrdl81#
我终于解决了这个问题。这个问题与Python和GDAL架构CPU之间的不兼容有关(参见M1 Mac - GDAL Wrong Architecture Error [Django])。
为了解决这个问题,您需要在安装python绑定的过程中指定体系结构(参见(mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')))。
在我们的例子中,第一步是卸载当前版本的python gdal:
第二步是通过指定CPU架构重新安装gdal(在我们的例子中是-arch arm 64):
之后,您可以通过执行以下命令来检查是否一切正常:
瞧!