在M1 Max设备上安装GDAL x86_64版本的问题求助
Django迁移时GDAL架构不兼容问题解决
问题重现
执行python manage.py migrate时触发架构不兼容错误:
OSError: dlopen(/Users/name/lib/libgdal.dylib, 0x0006): tried:
'/Users/name/lib/libgdal.dylib' (mach-o file, but is an incompatible
architecture (have 'arm64', need 'x86_64'))....
已尝试切换终端架构至i386后安装GDAL,但问题仍存在。当前settings.py配置:
GDAL_LIBRARY_PATH = '/opt/homebrew/opt/gdal/lib/libgdal.dylib' GEOS_LIBRARY_PATH = '/opt/homebrew/opt/geos/lib/libgeos_c.dylib'
核心原因
Apple Silicon Mac上,/opt/homebrew是arm64架构Homebrew的默认路径,你切换终端到x86_64后安装的GDAL实际存放在/usr/local目录,但settings.py仍指向arm64版本的库;同时你的Python环境可能还是arm64架构,和x86_64的GDAL无法匹配。
解决步骤
检查Python环境架构
在当前终端执行:python -c "import platform; print(platform.machine())"如果输出是
arm64,说明你用的还是arm64版本的Python,需要切换到x86_64版本的Python环境。通过Rosetta安装x86_64版本的Homebrew和GDAL
- 打开Rosetta终端:右键终端→显示简介→勾选「使用Rosetta打开」,重新启动终端。
- 安装x86架构的Homebrew:
该版本Homebrew默认安装在/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"/usr/local目录。 - 安装x86版本的GDAL和GEOS:
brew install gdal geos
更新settings.py中的库路径
修改为x86架构对应的路径:GDAL_LIBRARY_PATH = '/usr/local/opt/gdal/lib/libgdal.dylib' GEOS_LIBRARY_PATH = '/usr/local/opt/geos/lib/libgeos_c.dylib'使用匹配的Python环境运行项目
在Rosetta终端中,创建新的虚拟环境(避免继承之前arm64环境的依赖),安装项目所需依赖后,重新执行:python manage.py migrate
内容的提问来源于stack exchange,提问作者SCH361
相关产品推荐
相关产品推荐

