As distutils is being removed from Python in the > 3.10 versions, and setuptools will not be added to the stdlib, I want to replace an existing setup.py recipe for building/installing a C++ library Cython extension (i.e. not primarily a Python package, not run in a venv, etc.) with some custom code.
The Cython part is working fine, and I just about managed to construct an equivalent call to the C++ compiler from that previously executed by distutils, by using config-var info from sysconfig... though the latter was very trial and error, with no documentation or particular consistency to the config-var collection as far as I could tell.
But I am now stuck on identifying what directory to install my build extension .so into, within the target prefix of my build. Depending on the platform and path scheme in use, and the prefix itself, the subdirs could be in lib or lib64, a pythonX.Y subdir of some sort, and a final site-packages, dist-packages or other directory. This decision was previously made by distutils but I can't find any equivalent code to return such path decisions in other stdlib packages.
Any suggestions of answers or best-practice approaches? (Other than "use setuptools", please!)
sysconfigas far as I know.sysconfigdoesn't replicate all the features ofdistutils.sysconfig: in particular theget_python_lib()function, which accepted aprefixkwarg, is not replicated by thesysconfig.get_path("platlib")call (as suggested in msg393018 of the issue used to manage thedistutilsremoval: bugs.python.org/issue41282 ) Prefix-specific path calculations seem to have been left out.distutilsis not removed yet. It is scheduled to be removed in Python 3.12. -- Is there anything in PEP 632 that can help you find alternatives for the distutils functions you need? -- You can always copy-paste the distutils code you need into your ownsetup.py. -- Somehow I had in mind that distutils had been extracted to a package on PyPI, but maybe you do not want that anymore than installing setuptools. -- Otherwise I would suggest asking the question on the packaging category of Python Discuss form.