Rationale

The ability to uninstall packages installed by the install command is a long-time waited feature for distutils/setuptools. This document describe the design and features of such a facility.

An uninstall feature should be implemented for both distutils and setuptools: the setuptools uninstall command would then reuse the distutils one.

What should be the behavior of an uninstall command ?

distutils command

Problems to solve:

Possible solutions:

How to record the files installed

use the same facility as install --record to record the list of files to remove

Where to put the generated list

The list itself should be put in .egg-info (since it is built by both distutils and setuptools install command). The problem is how to get access to this list when several packages are installed (e.g. different site-packages, user vs system package, etc...). Several possible solutions:

Removing last installed version is a useful feature for people who follow some projects from svn, and get caught when some modules are renamed inside the package.

Maybe another useful features:

setuptools command

easy_install command

Central management for packages

A nice solution may be for python to have a centralized system to record installed packages. But how to deal with user python vs system python ? Putting some info into $HOME or equivalent cannot accomodate multiple python interpreters installed by users; putting them into a location 'owned' by the python interpreter is not usable when the python is system wide. More than likely to be hard to agree on implementation.

References

See:

Distutils/Proposals/UninstallCommand (last edited 2009-01-31 16:17:11 by 61)