I'm trying to get a django project up and running, which depends on GDAL library. I'm working on a M1 based mac.
Following the instructions on official Django docs, I've installed the necessary packages via brew
$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip
gdalinfo --version
runs fine and shows the version as 3.3.1
gdal-config --libs
returns this path: -L/opt/homebrew/Cellar/gdal/3.3.1_2/lib -lgdal
a symlink is also placed on the homebrew's lib directory, which is in my path env variable.
When I try to run django without specifying the path to gdal library, it complains that it cannot find the GDAL package (even though the library is reachable, as a symlink to it is available through path env variable).
When I try to specify the path to the GDAL library using GDAL_LIBRARY_PATH
, I get this error:
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
P.s. I've already seen this answer, but it didn't help.
Isn't that strange when I try to run gdalinfo it runs fine but when django tries to run it throws me this error? What am I doing wrong?
GDAL and Python are likely compiled for different CPU architectures. On an M1 system the OS can run both native arm64 and emulated x86_64 binaries.
To check: run file /opt/homebrew/Cellar/gdal/3.3.1_2/lib/libgdal.dylib
and file $(which python3)
, which should show the supported CPU architectures for both.
If the two don't match you'll have to reinstall one of them. Note that if you reinstall Python you also have to reinstall all Python packages with C extensions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With