[Python-Dev] PEP 376 - Open questions

Sridhar Ratnakumar SridharR at activestate.com
Thu Jul 9 03:42:43 CEST 2009


On Wed, 08 Jul 2009 09:22:52 -0700, Paul Moore <p.f.moore at gmail.com> wrote:

> If the only driver for this PEP is setuptools, then I'm -1 on it.
> Unless someone working on a packaging tool *other* than setuptools (or
> setuptools-derived projects) speaks up and says "I have code of my own
> which uses distutils, and I would benefit as follows from PEP 376 and
> I will be changing my code to conform to PEP 376" I think the PEP
> should be rejected, and the energy put into some other PEP which will
> benefit the wider (non-setuptools) community.

Other than easy_install/pip, there is also PyPM which is being developed  
at ActiveState. PyPM is the Python package manager much like what ppm is  
for ActivePerl.

We build packages using 'setup.py install --root', but when it comes  
installation on client .. there is a separate database of installed  
packages that has the following information for each package installed:

    - metadata (name, version, author, etc..)
    - installed_files (list of files installed on client)

So "pypm remove Foo" will simply remove all the 'installed_files' of Foo  
and remove Foo from the package database. The package database is  
currently an sqlite-based one.

PEP 376 definitely will benefit PyPM besides benefiting setuptools/pip. If  
all package managers rely on common API to 1) retrieve metadata of  
installed packages 2) write metadata into site-packages), then it is very  
possible that one package manager does not mess up with the installation  
of others. For example:

   $ pip install IPython
   $ pypm install ipython

Without PEP 376, pypm will overwrite pip's installation. But with PEP 376,  
as pip writes the RECORD file, pypm will reuse it (via the API) and  
co-operate with it.

Eventually, I'd like PEP 376 to support system packagers too. So for  
example, if you did "apt-get install python-pyqt4", then running "pip  
install python-pyqt4" should return without installing anything .. as  
RECORD will be part of the .deb previously installed. As for generating  
the RECORD file, I vote for generating it during install time (w/ absolute  
paths).

-srid


More information about the Python-Dev mailing list