Oh, wow. Thanks for all the insights! Since there just wasn't a standard solution for that in the form of sys.platlibdir before 3.9, I guess I should better check the downstream version of CPython sources used by Gentoo directly. The fact that Fedora and OpenSUSE use the same layout is also very helpful.
On Mon, Oct 5, 2020 at 11:57 AM Victor Stinner email@example.com wrote:
FYI Python 3.9 has a new sys.platlibdir to choose between "lib" and "lib64". Fedora and OpenSUSE use /usr/lib64 directory on 64-bit systems rather than /usr/lib.
On 64-bit Fedora, sys.platlibdir is set to lib64:
$ python3.9 -c 'import sys; print(sys.platlibdir)' lib64
Commented (simplified) sys.path:
$ python3.9 -m site sys.path = [ (...) '/usr/lib64/python3.9', # stdlib (pure Python) '/usr/lib64/python3.9/lib-dynload', # stdlib (C extensions) (...) '/usr/lib64/python3.9/site-packages', '/usr/lib/python3.9/site-packages', # RPM packages installed by dnf ] (...)
Fedora also uses sub-directories in /usr/local for packages installed by pip (here are directories of Python 3.8):
For curious people, see https://bugs.python.org/issue1294959 which took 15 years to be fixed! Fedora and OpenSUSE maintained a large downstream stream for at least 10 years :-) I added sys.platlibdir to remove this downstream change.
Le sam. 3 oct. 2020 à 16:46, Mikhail Golubev via Python-Dev firstname.lastname@example.org a écrit :
First of all, sorry for bringing up, perhaps, a trivial matter, but
since it's about the sources I guess it's better to ask it here.
I'm investigating a curious problem caused by the fact that in a user's
virtualenv, created with the standard "venv" module, "lib64" directory, traditionally symlinked to "lib", gets included in sys.path
instead of "lib" itself.
$ python -msite sys.path = [ '/current/working/directory' '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/path/to/venv/lib64/python3.6/site-packages', ]
The user is on Gentoo, and, though the venv's layout is exactly the
same, it's different from the typical result on a Debian-based distribution where it's the original "lib" in sys.path, not its "lib64" link. I'm wondering what's controlling this behavior. Modules/getpath.c doesn't mention architecture-dependent lib directories anywhere, at least at first glance. Could someone please give me a hint about where to look in the sources or, maybe, which build options are affecting this?
Thanks a lot! _______________________________________________ Python-Dev mailing list -- email@example.com To unsubscribe send an email to firstname.lastname@example.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at
Code of Conduct: http://python.org/psf/codeofconduct/
-- Night gathers, and now my watch begins. It shall not end until my death.