Skip to content

Wheel mislabelled py3-none-any but contains x86-64 ELF .so — fails on macOS and ARM64 Linux at import time #3

Description

@turban

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:

  1. 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
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions