
Tarek Ziadé wrote:
Reading your answer and Chris's, I am now wondering, if we have a global uninstall command, why we wouldn't have a global install command....
How hard would it be, from your projects, to have the install/uninstall feature, on the top of today's distutils ? (since the record feature is in distutils)
In other words, is the current "record" feature of distutils would be sufficient ?
I can see several things which have a big impact on an uninstall feature design: - how to handle multiple versions of one package ? - should it handle dependencies ? - should it work for packages installed anywhere, or only for a few reserved places ? Only the last point is worth considering at the distutils level - the two others are specific to setuptools (or more exactly any system on top of distutils). Once those decisions are made, we can make decision on how to deal with uninstall. For example, if uninstalling only packages installed in some blessed locations is acceptable, the problem of a global registry of some kind becomes much easier to deal with. If it is not, I don't see much choice but to put the packages-specific uninstall data in the package itself. Some people do not like setuptools stubborness about installing things in some places - I am one of them. But not being able to uninstall automatically would not bother me too much (actually, I install things manually so that I can use stow, which provides me an uninstall feature). I also wonder whether we should add uninstall feature to distutils itself from a UI POV. Of course, distutils should have some support of some kind, but the high level stuff could be done by another program, no ? After all, uninstall is NOT the opposite of install - many platforms let you install things on a per program basis, but then uninstalling is done in a centralized manner. I noticed that the ruby gems system, which I don't claim to know, use this system: http://www.rubygems.org/read/chapter/10#page38 Having a separate program would enable asking questions and co - which is not something I would be pleased to see in the python setup.py dance, cheers, David