[Python-Dev] PEP 376

Kevin Teague kevin at bud.ca
Wed Jul 1 04:12:19 CEST 2009


On Jun 30, 2009, at 4:46 PM, Tarek Ziadé wrote:

> On Tue, Jun 30, 2009 at 10:06 PM, Scott David
> Daniels<Scott.Daniels at acm.org> wrote:
>> Tarek Ziadé wrote:
>>>
>>> On Tue, Jun 30, 2009 at 8:37 PM, Paul Moore<p.f.moore at gmail.com>  
>>> wrote:
>>>>
>>>> [1] I'd actually like it if the PEP defined an uninstall command -
>>>> something like "python -m distutils.uninstall packagename". It  
>>>> can be
>>>> as minimalist as you like, but I'd like to see it present.
>>>
>>> it's already there:
>>>
>>> http://www.python.org/dev/peps/pep-0376/#adding-an-uninstall- 
>>> function
>>
>> That (at least as I read it) is a function, not a command.
>> If it is a command, give an example of its use from the command line
>> for us poor "don't want to research" people.  If the following works:
>>
>>    $ python setup.py uninstall some_package
>>
>> Then explicitly say so for us poor schlubs.
>>
>
> Right, I'll add that. Although it will be a reference implementation  
> only.
>

Uninstall as a command feels a little weird. Since "python setup.py  
[some-command]" implies that the setup.py contains information about  
the distribution that the command is being applied to. So instead of:

$ python setup.py uninstall some_package

It could just be:

$ python setup.py uninstall

Except then you'd need to have a complete distribution kicking around  
with which to run the "python setup.py uninstall" command just to tell  
the uninstall command the distribution name you want to uninstall. But  
then with the other uninstall format you could uninstall any  
distribution from within any other distribution, which is convenient,  
but weird ... e.g.:

$ cd Spam-1.0/
$ python setup.py uninstall Foo

Although even the other version of the command could do weird stuff:

$ cd Spam-1.0/
$ python setup.py install
$ cd ../Spam-2.0/
$ python setup.py uninstall

Which would presumably remove the Spam 1.0 distribution when run from  
the 2.0 version of it! Or perhaps this command should only allow  
uninstall to be run from a distribution whose name and version match  
the one that it was installed from ...

I dunno what the right solution is. My two-cents is either to punt and  
only include an uninstall function as currently proposed, or for only  
supporting some form of the "python setup.py uninstall" style since I  
would guess that the most common use-case for uninstall is: user  
downloads a distribution, runs "python setup.py install", tries out  
the package, decides they don't like package, then runs "python  
setup.py uninstall" to restore their python back to it's original  
state. For doing anything more complex than that, people should be  
encouraged to use another one of the existing tools for managing their  
distributions, IMHO.



More information about the Python-Dev mailing list