← Back to team overview

touch-packages team mailing list archive

[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