GenericMappingTools / GenericMappingTools/pygmt
Distribute PyGMT wheels with libgmt included
- Dominant language
- Python
- Stars
- 874
- Forks
- 255
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 40
Description
**Description of the desired feature**
The core idea is to enable something like `pip install pygmt-gmt6.4`, where the GMT C binary is bundled directly with PyGMT. I.e. users don't have to install GMT first, and then install PyGMT, solving the issue of "Why can't I just `pip install pygmt`?".
> distribute libgmt with PyPI wheels in the future (which would be awesome but difficult to achieve).
_Originally posted by @leouieda in https://github.com/GenericMappingTools/pygmt/issues/1848#issuecomment-1080336677_
I don't know how this fully works, but I know that there are Python packages like `scipy` and `cupy` which have C libraries bundled inside them. In the case of scipy, they've recently moved to this thing called Meson builds (see https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson), and I'm wondering if there's something in there we can learn from
For `cupy`, if you look on https://pypi.org/project/cupy, there are several sub-packages like `cupy-cuda114`, `cupy-cuda115`, etc, whereby each `cupy` version is tied to a particular CUDA version binary. Again, not sure how this works but we might be able to have a similar setup where there's a plain `pygmt` source/wheel with no GMT, and a `pygmt-gmt64`, `pygmt-gmt65`, etc.
**Are you willing to help implement and maintain this feature?** Long term issue (>2023) that will need lots of teamwork.
Contributor guide
Assessment
This issue has not been assessed yet.