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

Ned Deily nad at python.org
Sat Jul 15 00:37:20 EDT 2017


On Jul 15, 2017, at 00:22, Nathaniel Smith <njs at pobox.com> wrote:
> A user on the pywavelets mailing list seems to have gotten themselves
> into a mess: AFAICT they did 'pip install --user pywavelets' using a
> ucs4 python, and then started a ucs2 python and tried to import it,
> which of course failed because these two python builds have
> incompatible ABIs, even though they share the same --user directory.
> 
> In retrospect, this seems like an obvious oversight: right now the
> --user path (on Linux) is something like
> 
>  ~/.local/lib/python3.5/site-packages
> 
> Wouldn't it make more sense for it to be something like
> 
>  ~/.local/lib/cpython-35m-x86_64-linux-gnu/site-packages
> 
> so that Pythons with incompatible ABIs can't see each other's
> packages? (That's sysconfig.get_config_var("SOABI").)
> 
> Obviously this can't really be fixed for old versions, but is this a
> change that should be made in 3.7?

I'm confused.  This shouldn't be an issue for Python 3.*.  First, there is no ucs2 / ucs4 option since Python 3.3 and PEP 393's flexible string representation. But even before that, PEP 3149 (in 3.2) is supposed to ensure that extension modules have unique names based on ABI, for example:

_psutil_osx.cpython-35m-darwin.so

This *is* a problem in Python 2.7 but that's not going to change now.

--
  Ned Deily
  nad at python.org -- []



More information about the Distutils-SIG mailing list