[Distutils] PEP 345, PEP 376, PEP 386

David Cournapeau david at ar.media.kyoto-u.ac.jp
Fri Jun 5 10:21:34 CEST 2009

Tarek Ziadé wrote:
> The idea of the uninstall API is to provide a reference implementation
> that can be used
> in package managers that will rely on the other APIs, rather than a
> complete system.

For package managers which manage everything (pretty much every native
binary installer, be it msi/wininst/rpm/deb), uninstall feature is not
needed anyway. They handle all this by themselves once they know what
they install.

> For instance, Distutils doesn't handle dependencies
> installation/uninstallation, while PEP 345 introduces them
> in the metadata.

I think dependencies is the easy part for uninstallation - it is a
non-issue IMHO (once a decision on how to deal with dependencies is done
:)). The hard problem is how to uninstall one package at the right
location (/usr vs $HOME vs something else on Unix, for example),
reliably. I am generally very much in favor of delegating many things to
3rd party, using metadata instead of tools, but I think
uninstall/registration of packages can only be implemented by python
itself reliably, if only because there can't be several systems at the
same time.

If it is handled by a 3rd party system, I see the following problems:
    - how to know exactly which package to remove (if I have several of
them installed) ?
    - how to get access to the list of installed packages
    - how to deal with doc, generated .pyc/.pyo, configuration files,
rollback, etc...

I don't see how this kind of infrastructure can be provided by a 3rd
party, unless it is guaranteed there will be only one.


More information about the Distutils-SIG mailing list