Skip to content

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

@turban

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions