python - M1 Mac - GDAL 错误的架构错误 [Django]
问题描述
我正在尝试启动并运行一个 django 项目,这取决于 GDAL 库。我正在开发基于 M1 的 mac。
按照官方 Django 文档的说明,我已经通过 brew 安装了必要的包
$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip
gdalinfo --version
运行良好并将版本显示为3.3.1
gdal-config --libs
返回此路径:-L/opt/homebrew/Cellar/gdal/3.3.1_2/lib -lgdal
一个符号链接也放置在自制软件的 lib 目录中,该目录位于我的路径 env 变量中。
当我尝试在不指定 gdal 库路径的情况下运行 django 时,它抱怨它找不到 GDAL 包(即使该库是可访问的,因为它的符号链接可通过路径 env 变量获得)。
当我尝试使用 指定 GDAL 库的路径时,GDAL_LIBRARY_PATH
出现此错误:
OSError: dlopen(/opt/homebrew/Cellar/gdal/3.3.1_2/lib/libgdal.dylib, 6): no suitable image found. Did find:
/opt/homebrew/Cellar/gdal/3.3.1_2/lib/libgdal.dylib: mach-o, but wrong architecture
/opt/homebrew/Cellar/gdal/3.3.1_2/lib/libgdal.29.dylib: mach-o, but wrong architecture
Ps 我已经看过这个答案,但它没有帮助。
当我尝试运行 gdalinfo 时它运行良好但是当 django 尝试运行时它会抛出这个错误,这不是很奇怪吗?我究竟做错了什么?
解决方案
GDAL 和 Python 可能针对不同的 CPU 架构进行编译。在 M1 系统上,操作系统可以运行本机 arm64 和模拟 x86_64 二进制文件。
检查:运行file /opt/homebrew/Cellar/gdal/3.3.1_2/lib/libgdal.dylib
和file $(which python3)
,它应该显示两者支持的 CPU 架构。
如果两者不匹配,则必须重新安装其中之一。请注意,如果您重新安装 Python,您还必须重新安装所有带有 C 扩展名的 Python 包。
推荐阅读
- php - 如何在 PHP 中使用 foreach 循环仅回显特定的多个相同记录?
- node.js - “sls dynamodb start”抛出 spawn java ENOENT
- unity3d - 在同一场景中改变不同的天气
- c - 无法将 PathFindExtensionW 输出分配给 WCHAR 数组
- php - 我想使用 htaccess 阻止除办公室 IP 之外的所有 IP 地址
- python - 循环直到正确输入
- mysql - 表达到 4GB 并且每次连接到 mysql 时 mysql 都失去了连接
- sql - Count(*) 和 Count(field_name) 在 oracle 中返回差异输出
- ios - 无法初始化测试包 xcode 单元测试
- python - 合并 2 个字典并为覆盖的值保存翻译字典