I’m not saying every project needs to ship wheels (I’m not sure if you think “build wheels” means the same as “ship wheels” - if you do, bear with me as I make a distinction between the two below). I’ve snipped a lot of context from your message, but you removed a lot of context from mine as well. Unfortunately (and I think this is at least partly the point you’re trying to make) people do quote things out of context, and often treat quotes without context as supporting their preferred position, even if that’s not the reality at all.
Let me try to clarify. I understand that you are frustrated with the pressure you see to distribute wheels, so I accept that you might not be comfortable with the picture I’m describing below.To be clear, this is my personal view, but if you want to infer “authority” here, can I ask that you keep firmly in mind that I’m offering personal opinions and a personal interpretation of what I hear the community saying. Authority comes from what’s agreed in PEPs, not what I say. (And yes, I know that whatever I say will be taken as “authoritative”, no matter how many disclaimers I add - there’s not much I can do about that except try to be as clear as I can…)
In the context of packaging, wheels tend to get discussed in two distinct contexts. As an intermediate format for transferring files between the “build” and the “install” phases of package installation, and as a public format for sharing package binaries. When I talk about pip “installing via wheel” I’m very specifically referring to the first of these (see below). When people are asking projects to publish wheels, they are asking for the second.
And yes, maybe the terminology is confusing, and maybe that makes the problem worse. If anyone wants to try to bridge the communication gap better, then great. Words are hard, expert advice is welcome.
The key distinction here is around the target platform. Wheels as installation intermediary can be as platform specific as you want, down to the level of “only works on this machine”. But wheels as binary publishing format have to tackle all sorts of portability issues. And yes, I 100% accept that not every project can viably produce portable wheels. If anyone claims that “the PyPA” is requiring projects to do so, feel free to direct them to this message - we are not (treat that statement as authoritative, if you like ). Unfortunately, that isn’t likely to reduce the pressure much, because what is actually happening is that users are asking for binary builds that they can “just install”. The fact that they want wheels is because they use pip (and other tools that consume the wheel format). You can suggest that they switch to conda if providing binaries via conda is viable for you - but getting people to change their preferred tools is always a challenge, regardless of technical merits.
Going back to “installing via wheel”, in that case what we need is not “portable” wheels. Machine specific ones are perfectly fine, and if you can build the project at all, you can produce machine specific wheels. With setuptools, bdist_wheel
just runs build
and collects the output - so as long as build
works, you can get a wheel.
So install via wheel should be a non-issue for nearly all projects (the exceptions will be projects that customise the setuptools “install” command - which is pretty rare in my experience). But being able to install via wheel does not mean a project can necessarily publish wheels. And conversely, projects that only publish sources will very likely still be just as installable by pip regardless of whether we do “install via setup.py install
” or “install via wheel”.
I hope this makes things clearer. Sadly, I suspect it won’t. What’s needed is a pithy one-liner that people can tweet, quote without context and make memes from. Unfortunately, not everything in life is that simple
(BTW, this is all a complete side-issue as far as Python for Android is concerned. Their problem, as far as I understand it, is around how pip sets up the build environment when building projects from source, and has essentially nothing to do with wheels).