touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #94760
[Bug 1408092] Re: sysconfig.get_path('purelib') points to site-packages directory
Status changed to 'Confirmed' because the bug affects multiple users.
** Changed in: python3-defaults (Ubuntu)
Status: New => Confirmed
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python3-defaults in
Ubuntu.
https://bugs.launchpad.net/bugs/1408092
Title:
sysconfig.get_path('purelib') points to site-packages directory
Status in python3-defaults package in Ubuntu:
Confirmed
Bug description:
purelib and platlib paths in Python 3 sysconfig module point to site-
packages directory:
$ python3 -m sysconfig
Platform: "linux-x86_64"
Python version: "3.4"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr"
include = "/usr/include/python3.4m"
platinclude = "/usr/include/python3.4m"
platlib = "/usr/lib/python3.4/site-packages"
platstdlib = "/usr/lib/python3.4"
purelib = "/usr/lib/python3.4/site-packages"
scripts = "/usr/bin"
stdlib = "/usr/lib/python3.4"
...
whereas Python 2 points to dist-packages:
Platform: "linux-x86_64"
Python version: "2.7"
Current installation scheme: "posix_local"
Paths:
data = "/usr/local"
include = "/usr/local/include/python2.7"
platinclude = "/usr/local/include/python2.7"
platlib = "/usr/local/lib/python2.7/dist-packages"
platstdlib = "/usr/lib/python2.7"
purelib = "/usr/local/lib/python2.7/dist-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/lib/python2.7"
...
One severe consequence of this is that automake is installing Python
modules to a location which is not in sys.path, namely site-packages
directory.
When one uses automake to create a Makefile that installs a Python
module to the system, it is installed into /usr/local/lib/python3.4
/site-packages since automake/aclocal uses sysconfig to determine
where the package will be installed.
From /usr/share/aclocal-1.14/python.m4 file:
AC_CACHE_CHECK([for $am_display_PYTHON script directory],
[am_cv_python_pythondir],
[if test "x$prefix" = xNONE
then
am_py_prefix=$ac_default_prefix
else
am_py_prefix=$prefix
fi
am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) <-----------
else:
from distutils import sysconfig
...
Here, it can be seen that automake uses purelib path defined by the
sysconfig module of Python. However, since this path is not included
in sys.path, and thus the installed package cannot be used:
$ python3 -c "import sys; print(sys.path)"
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
Ubuntu version:14.10
$ apt-cache policy python3-minimal
python3-minimal:
Installed: 3.4.2-1
Candidate: 3.4.2-1
Version table:
*** 3.4.2-1 0
500 http://mirror.23media.de/ubuntu/ utopic/main amd64 Packages
100 /var/lib/dpkg/status
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092/+subscriptions
References