On Jul 15, 2017, at 00:41, Nathaniel Smith <n...@pobox.com> wrote:
> 
> On Fri, Jul 14, 2017 at 9:37 PM, Ned Deily <n...@python.org> wrote:
>> On Jul 15, 2017, at 00:22, Nathaniel Smith <n...@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.
> 
> Right, but there are still SOABI variations, e.g. debug builds versus
> regular builds.

And those are covered in the file names, e.g. a debug build extension module 
would be:

_psutil_osx.cpython-35dm-darwin.so

> 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
> 
> 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, that sounds like either a pip problem or a packager's problem.  The point 
of PEP 3149 was exactly to allow multiple builds of extension modules built 
with different ABIs to co-exist in the same directory.  You would have the same 
behavior with packages installed to the system site-packergs dir, right?  So 
what's special about --user?

--
  Ned Deily
  n...@python.org -- []

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to