As a user of scientific computing software packages, Python packages always trips over binary extensions that require cooperation with binaries on the target system. Packaging things in wheels becomes impossible, because there is currently no way for a user to specify that they want a wheel, but specifically the wheel that is compatible with their local library.
Take mpi4py
, the most popular parallelization scheme in my field. It requires to know which MPI
implementation is used: MPICH
,
OpenMPI
, ...? What mpi4py
does is provide a source distribution that detects the local library at install time, and errors out if it can't. So the user is
tasked with installing the binary dependencies of a Python package, before they can install the Python package. Python users have by design 0 knowledge of building binary software, we pip install
or riot ┬─┬ノ(ಠ_ಠノ).