TL;DR
How the heck does one set up and build a complex package with Cython and C++ and all that with the modern tools?
NOTE: I’ve been scouring the net looking for up to date information on this, and have found nada, zip., zilch. This page looked promising:
https://packaging.python.org/en/latest/guides/packaging-binary-extensions/
But:
Packaging binary extensions
Page Status: Incomplete
Last Reviewed: 2013-12-08
So – not so helpful.
Maybe there’s a resource out there, but I haven’t found it.
I’m asking this now because my CI build has just broken with up-to-date Python and setuptools, (I haven’t been able to figure out why yet, it still works on my development machine) and I’ve been seeing messages about setuptools being depreciated, and that I should use build, and I know distutils is going to be taken out of core Python, and …
So I clearly need to modernize my build system – but I have no idea how.
(Side note: “build” is an unfortunate name for a package – it’s impossible to search for information about it!)
Maybe it’s just that I haven’t found the right docs, but I’ve been following the modernization of packaging for a long time, and I’m a bit distressed that my important use cases seem to be continuing to be neglected. That is:
- Building C extensions
- “editble” mode.
For a tiny bit of history about why that’s what’s important to me:
-
I discovered the distutils a LONG time ago-- and was SO HAPPY that it provided a platform independent way to build C extensions – the pure Python stuff was nice, but meh – the C extensions were the killer feature.
-
Then setuptools came along, and I was not the least bit happy about how much it merged into one package. But it did provide “develop” mode – which is an absolute godsend – I have no idea how anyone can develop a complex package without it.
Anyway – I’ve been trying to pay attention to the progress of the modernization of packaging for a good while, but haven’t done much new for my complex packages because I don’t see the features I need being supported.
Hopefully, someone will be able to point me to a resource that will help.