Summary
The published wheel (rqadeforestation-0.2.3-py3-none-any.whl) is tagged py3-none-any, which signals to installers that it is pure Python and platform-independent. However, the wheel contains a pre-compiled native binary:
rqadeforestation/lib/rqatrend.so ← ELF 64-bit, x86-64
Because the wheel tag does not restrict the platform, pip and uv install it happily on every system. The failure only surfaces at import time:
- macOS (any architecture):
OSError: dlopen … no suitable image found — macOS does not load ELF binaries (it expects Mach-O)
- ARM64 Linux:
OSError: cannot open shared object file … wrong ELF class — the .so is x86-64, not AArch64
Steps to reproduce
# on macOS (Apple Silicon or Intel) or ARM64 Linux
pip install rqadeforestation
python -c "import rqadeforestation"
# → OSError / ImportError
Expected behaviour
Either:
- Publish platform-specific wheels with the correct tags (e.g.
linux_x86_64, linux_aarch64, macosx_*_*_x86_64, macosx_*_*_arm64) so only the matching binary is installed, or
- Make the native extension optional with a pure-Python fallback so the package can be imported on all platforms
Impact
Downstream packages that depend on rqadeforestation (e.g. openeo-processes-dask) cannot install on macOS or ARM64 Linux without workarounds. We had to vendor-patch openeo-processes-dask in our project to remove this dependency: dhis2/open-climate-service#157
Summary
The published wheel (
rqadeforestation-0.2.3-py3-none-any.whl) is taggedpy3-none-any, which signals to installers that it is pure Python and platform-independent. However, the wheel contains a pre-compiled native binary:Because the wheel tag does not restrict the platform,
pipanduvinstall it happily on every system. The failure only surfaces at import time:OSError: dlopen … no suitable image found— macOS does not load ELF binaries (it expects Mach-O)OSError: cannot open shared object file … wrong ELF class— the.sois x86-64, not AArch64Steps to reproduce
Expected behaviour
Either:
linux_x86_64,linux_aarch64,macosx_*_*_x86_64,macosx_*_*_arm64) so only the matching binary is installed, orImpact
Downstream packages that depend on
rqadeforestation(e.g.openeo-processes-dask) cannot install on macOS or ARM64 Linux without workarounds. We had to vendor-patchopeneo-processes-daskin our project to remove this dependency: dhis2/open-climate-service#157