[Distutils] Including soabi tag in --user path?

Nathaniel Smith njs at pobox.com
Sat Jul 15 03:44:56 EDT 2017


On Fri, Jul 14, 2017 at 10:51 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On 15 July 2017 at 14:41, Nathaniel Smith <njs at pobox.com> wrote:
>>> _psutil_osx.cpython-35m-darwin.so
>>
>> Right, but this only helps if you install multiple builds of the same
>> package on top of each other. Which Debian is able to arrange, so PEP
>> 3149 solves their problem. But the --user dir is managed by pip, and
>> if you try to install a cpython-35dm package on top of a cpython-35m
>> package, then pip will helpfully remove the first before installing
>> the second. (And this is really the only reasonable thing for pip to
>> do.) So in practice any given package in the --user dir can only
>> support one SOABI variant, even though all the SOABI variants use the
>> same dir.
>
> Well, sort of - it's not intrinsic to *pip* or *Python* that this
> happens, it's an artifact of the fact that even though the
> compatibility tagging scheme allows for it, folks don't tend to
> publish "multi-SOABI" wheel files (where the 35dm and 35m binaries are
> in the same wheel), so installing one will uninstall the other.

I guess that's... sort of true? But it seems to me that the goal
should be that Python shouldn't be finding broken packages on its
search path, and AFAICT there are only two ways to accomplish that:

- give Pythons with different SOABIs different search paths
- mandate that *all* wheels be "multi-SOABI" wheel files that include
every possible SOABI

Installing a single-SOABI wheel into a multi-SOABI search path is just
asking for trouble.

Also AFAICT PyPy also shares the same --user path as the corresponding
CPython release, so this isn't just restricted to debug builds of
Python.

-n

-- 
Nathaniel J. Smith -- https://vorpus.org


More information about the Distutils-SIG mailing list