PEP 517 has no support for direct installs from source, with everything being built as a wheel and installed from that. That’s a deliberate design decision. However, pip introduced the
--no-binary option specifically to allow for packages that cannot be installed via wheel (see this comment and this issue).
I don’t know if such “known bad” packages still exist, and I’m pretty sure that in fact the majority of current use of
--no-binary is focused on the “I don’t want to download prebuilt binaries, I want to install everything from source” use case. But we need to consider what we do in a post-PEP 517 world.
At the moment,
--no-binary disables PEP 517, but that’s not a long-term solution as we intend (at some point) to remove the legacy "install via
setup.py" code path from pip.
I personally think we should simply drop support for packages that won’t work when installed via wheels (specifically from pip, and from consideration in terms of current and future standards discussions) but we need to decide how to publicise that desupport, and how to identify and warn affected projects.
What do other people think?
More generally, should we have a “packaging standards scope” document that clearly states assumptions like this over how we expect supported projects to work?