[Python-Dev] PEP 250, site-python, site-packages

Gregor Hoffleit gregor@hoffleit.de
Tue, 3 Jul 2001 14:09:51 +0200


PEP 250 talks about adopting site-packages for Windows systems. I'd like
to discuss the sitedirs as a whole.

Currently, site.py appends the following sitedirs to sys.path:

    * <prefix>/lib/python<version>/site-packages
    * <prefix>/lib/site-python

If exec-prefix is different from prefix, then also

    * <exec-prefix>/lib/python<version>/site-packages
    * <exec-prefix>/lib/site-python


>From the viewpoint of a Linux distribution, putting pure Python
extension packages in <prefix>/lib/python<version>/site-packages is
quite awkward: Debian has Python extension packages that would work
unmodified with all Python versions since 1.4 up to now; and still, for
every new <version> of Python, we have to make a new package, with only
the installation path changed.

Due to Python's good tradition of compatibility, this is the vast
majority of packages; only packages with binary modules necessarily need
to be recompiled anyway for each major new <version>.

What makes me wonder is that nobody seems to use site-python; Distutils
is completely unaware of it, and besides a few generic Debian packages
(reportbug, dpkg-python), no extension packages on my machine is in
site-python. site-packages OTOH is used by Distutils, and this PEP 250
would recommend its use even on Windows systems.


I would suggest to turn this upside down:

Python extensions should be installed in <prefix>/lib/site-python by
default. Only if they contain things that definitely should not be used
with any other Python <version> (e.g. binary modules), they might be
installed in the version-specific extension directory,
<prefix>/lib/python<version>/site-packages.


I'm thinking about modifying Debian's distutils in order to install all
architecture independent stuff in site-python. This would vastly ease
the maintenance of Python packages.


    Gregor