biocore / biom-format

The Biological Observation Matrix (BIOM) Format Project
http://biom-format.org
Other
89 stars 95 forks source link

No wheel files on PyPI #882

Closed peterjc closed 1 year ago

peterjc commented 1 year ago

The current and recent releases are only on PyPI as source code release tar-balls, e.g.:

https://pypi.org/project/biom-format/2.1.12/#files

This made pip install biom-format considerably slower than expected on macOS and Linux (speed matters for dependency installation during CI testing), and I strongly suspect would be challenging on Windows given you'd presumably need a compiler setup for the Cython code.

Could you provide standard pre-compiled wheels (or would you recommend using conda-forge instead?)

wasade commented 1 year ago

@peterjc I typically install from conda-forge. I'm not sure on the process for pre-compiled wheels -- I'm sure it's not hard, just haven't done it before. I'd welcome a PR against the release workflow if you're interested?

peterjc commented 1 year ago

The minimal change would like be supplement python setup.py sdist with python setup.py bdist_wheel but that would only compile a wheel for the current platform (likely Linux and a single version of Python). That would be fine for a pure-Python package, where there is only one wheel required.

If (as I suspect) you would need to compile for multiple operating systems and versions of Python, you'd need a whole build matrix. Hopefully not as complicated as https://github.com/numpy/numpy/blob/main/.github/workflows/wheels.yml or https://github.com/scipy/scipy/blob/main/.github/workflows/wheels.yml but that's the idea. Implementation details vary, you might be able to use something simpler like https://github.com/biopython/biopython-wheels/blob/master/.github/workflows/cibuildwheel.yml

Can you thinking of a comparable project in terms of your build chain (i.e. Cython based)?

wasade commented 1 year ago

It's primarily a matter of bandwidth. This package is readily installable already from conda-forge, so I'm not too worried about the lack of wheels -- if a user needs to install it faster then I'd recommend use of conda. I would certainly welcome a pull request to improve our automated release methods, but I won't be able to put time into anytime soon.