Deprecate bdist_wininst: use bdist_wheel instead #81662
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
assignee = None closed_at = <Date 2019-07-05.10:26:46.331> created_at = <Date 2019-07-02.11:05:55.069> labels = ['3.8', 'library', '3.9', 'OS-windows'] title = 'Deprecate bdist_wininst: use bdist_wheel instead' updated_at = <Date 2019-07-05.10:26:46.324> user = 'https://github.com/vstinner'
activity = <Date 2019-07-05.10:26:46.324> actor = 'vstinner' assignee = 'none' closed = True closed_date = <Date 2019-07-05.10:26:46.331> closer = 'vstinner' components = ['Distutils', 'Windows'] creation = <Date 2019-07-02.11:05:55.069> creator = 'vstinner' dependencies =  files =  hgrepos =  issue_num = 37481 keywords = ['patch'] message_count = 6.0 messages = ['347131', '347153', '347288', '347312', '347317', '347331'] nosy_count = 9.0 nosy_names = ['paul.moore', 'vstinner', 'tim.golden', 'eric.araujo', 'zach.ware', 'steve.dower', 'dstufft', 'p-ganssle', 'miss-islington'] pr_nums = ['14553', '14598'] priority = 'normal' resolution = 'fixed' stage = 'resolved' status = 'closed' superseder = None type = None url = 'https://bugs.python.org/issue37481' versions = ['Python 3.8', 'Python 3.9']
The text was updated successfully, but these errors were encountered:
According to the following "Deprecate bdist_wininst" discussion, bdist_wininst can be deprecated:
bdist_wininst uses the mbcs encoding which is only available on Windows. There is bpo-10945 open for 8 years to suggest to use UTF-8 or use the Unicode (wide character) flavor of the Windows API to support running bdist_wininst on non-Windows platforms and to be able to distribute binaries which don’t depend on the ANSI code page.
I propose to deprecate it in Python 3.9, because of bpo-10945 issue. I don't propose to plan bdist_wininst removal yet.
As an user, it’s annoying to have to run a GUI to install something, whereas pip can install dependencies using wheel packages in a command line interface, transparently, without bugging the user with dialog boxes.
When I look at numpy or Cython: they don’t distribute .exe installers, but binary wheel packages for Windows. I understood the wheel packages is the recommended way to distribute binaries on Windows, and so that bdist_wininst is kind of deprecated.
Donald Stufft wrote:
"For what it’s worth, PyPI doesn’t even allow you to upload bdist_wininst (See PEP-527 2) anymore, so if you’re looking at PyPI to determine usage, you’re going to get no usage whatsoever for anything recent.
I don’t have any idea if other people are still using bdist_wininst and distributing them through some other mechanism."
Paul Ganssle wrote:
"From my perspective, nearly all direct invocations of setup.py are currently or are eventually heading for deprecation. PEP-517 doesn’t provide hooks to generate anything other than sdist or wheel, so basically all commands not actually triggered (directly or indirectly) by calling a PEP-517 front-end are suspect."
Attached PR deprecates bdist_wininst.
For the record, I am 100% in favor of deprecating and removing bdist_wininst and bdist_msi from distutils as soon as possible, as they are maintenance burdens and bdist_wininst in particular often attracts AV false positives.
setuptools is welcome to either do the same or restore the functionality, I don't have any preference if someone else is maintaining it (but I'd suggest removal there too until someone wants to maintain it).
Some of our distributions of Python already exclude bdist_wininst, so it can't be blindly relied on. And I don't know that it was ever upgraded for PEP-514. So far I have heard zero complaints about this, though as Paul Ganssle pointed out on the PR they're not likely to be using the "newer" packages.
So consider me +1 for deprecate in 3.8 (we can still do that, right? it's just docs and a warning on use) and remove in 3.9 or 3.10 as appropriate.
I modified my PR to deprecate the feature in Python 3.8. I'm not sure about scheduling the removal yet, since the Python 3.9 release schedule is under discussion:
I would prefer to give at least 2 years to projects to update their setup.py (how they are distributed). Even if bdist_wininst has issues, it's not too painful to maintain a few more years. The removal can be decided later.