New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] wrong EXT_SUFFIX on python 3.7 on Windows #3219
Comments
Hi @axnsan12 thank you very much for opening this issue and providing some preliminary investigation. It helps a lot! Would you like to file a similar issue (or even copy this one) to the pypa/distutils repository? Once the issue is solved there, we can merge it back here. |
Hello @abravalheri, done as requested. Appears a fix has already been merged into distutils. |
Hi @axnsan12, I am not familiar with the procedure to merge distutils, but usually Jason (the main developer behind setuptools and distutils) does it very frequently. So I am sure this change will be available soon. |
Hi @axnsan12 can you confirm the latest release fixes this issue? |
Yep, seems good!
Thanks to everyone for the fix! |
setuptools version
>=61
Python version
3.7
OS
Windows
Additional environment information
No response
Description
This setuptools commit changed the bundled
distutils.sysconfig
to transparently forwardget_config_var
to the interpreter builtin sysconfig: 4b313f0However, as mentioned in this python bug, sysconfig is (was) broken and returns a bad EXT_SUFFIX on python >=3.7. The issue was fixed in 3.10, with a backport into 3.8 and 3.9, however 3.7 was completely left behind.
This problem was mentioned on the setuptools issue tracker in the past, but the knowledge seems to since have slipped the collective mind.
Since setuptools hijacks
import distutils
by default, this means that anyone using python 3.7, or an older 3.8 or 3.9 installation, will suddenly start getting a wrongEXT_SUFFIX
by simply updating tosetuptools>=61
, and the only way to get back the correct behavior is toset SETUPTOOLS_USE_DISTUTILS=stdlib
to prevent the hijacking. Given this overarching impact I believe it's unfair to impose such a breaking change on users unsuspectingly using older python versions.Notably, this completely breaks CMake builds of extension modules with FindPython when using affected python versions, since they use
distutils.sysconfig
to determine the required EXT_SUFFIX.Expected behavior
Return proper EXT_SUFFIX on any python version >=3.7 (e.g.
.cp37-win_amd64.pyd
)How to Reproduce
setuptools>=61
py -3.7 -c "from distutils import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))"
Output
.pyd
The text was updated successfully, but these errors were encountered: