[Python-Dev] PEP 376 - Open questions
P.J. Eby
pje at telecommunity.com
Wed Jul 8 20:33:02 CEST 2009
At 05:22 PM 7/8/2009 +0100, Paul Moore wrote:
>2009/7/8 P.J. Eby <pje at telecommunity.com>:
> > At 03:57 PM 7/8/2009 +0100, Paul Moore wrote:
> >>
> >> Who's going to use the APIs based around the RECORD file? Anyone?
> >
> > The distutils uninstall facility, for starters. easy_install and pip also
> > will, eventually.
>
>Is pip getting this via setuptools, or will it be independently
>changing its code? (Who's the pip contact who could confirm this
>directly?)
It would likely be changing its code directly, with respect to
supporting overwrite-avoidance and uninstall-before-upgrade
scenarios. (Generation support would likely come from setuptools,
dependent on who implemented first.) Ian Bicking is pip's author.
>In case (1), I'd imagine the user is careful enough (given that he's
>doing everything manually) to avoid installing something that's
>already present.
Obviously, you've never tried doing this yourself. ;-)
My guess would actually be that in Unixy environments these days,
people either use virtualenv or buildouts to manage such
things. Buildout handles uninstall-before-update (for eggs, anyway,
I'm not sure about other things) and virtualenv makes it easy to
create throwaway Python installs.
>So if I follow this, there's a use for this in making sure the new
>distutils uninstall option doesn't break something it shouldn't, but
>as the uninstall uses RECORD, it won't be (accidentally) usable on
>distributions that didn't follow PEP 376 and create a RECORD file.
That's an interesting point. But for non-distutils tools, it'd be
nice to be able to find out whether another package manager is
administering some particular file. For that matter, the distutils
themselves should (ultimately) support uninstall-before-upgrade and
avoid overwriting another package manager's files.
>If the only driver for this PEP is setuptools, then I'm -1 on it.
If it were being driven by setuptools, I'd have just implemented it
myself and presented it as a fait accompli. I can't speak to Tarek's
motives, but I assume that, as stated in the PEP, the primary driver
is supporting the distutils being able to uninstall things, and
secondarily to allow other tools to be built on top of the API.
>a packaging tool *other* than setuptools (or setuptools-derived projects)
Is there really such a thing? ;-)
AFAIK, every published tool for managing Python projects is either
distutils-based or setuptools-based. (Things like scons and pymake
and various other project build tools don't seem to fall under
"packaging tool" in this sense.)
More information about the Python-Dev
mailing list