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