[Distutils] tracking requested vs dependency installs in PEP 376 metadata

Eric Smith eric at trueblade.com
Mon Oct 12 02:06:05 CEST 2009

Ronald Oussoren wrote:
> On 11 Oct, 2009, at 20:58, Lennart Regebro wrote:
>> 2009/10/11 Ronald Oussoren <ronaldoussoren at mac.com>:
>>>>> That is, I install "SuperWebFramework==1.0" which happens to depend on
>>>>> peak-rules. I later start using peak-rules in my own simple scripts
>>>>> (without
>>>>> a setup.py or other explicit dependency information), and yet later
>>>>> decide
>>>>> to uninstall "SuperWebFramework".  If I understand the proposal 
>>>>> correctly
>>>>> the uninstallation of "SuperWebFrameWork" would break my scripts.
>>>> Yes of course.
>>> IMHO that is a bad experience for the user, because it is very 
>>> unintuitive
>>> that I have to explicitly install something that's already installed to
>>> ensure that it doesn't go away in the future.
>> But this is how all installs/uninstalls work and MUST work. If you
>> uninstall the software that you use, then you can't use it. It's a
>> simple necessity of life.
> Sigh.
> 1) Install TurboGears, this installs simplejson as one of its dependencies
> 2) Notice that simplejson gets installed and is a useful module, then 
> use that in your own scripts
> 3) Uninstall TurboGears
> With proposal of tracking which packages are installed as a dependency 
> of other packages and automaticly uninstalling them when the package 
> that depends on them gets uninstalled step 3 would break my scripts 
> unless I explictly tell the installer that I really want to use 
> simplejson in step 2.

You really need to evaluate the dependency graph when uninstalling, a 
simple bit doesn't help.

Image step 2B above: install Yapper, which uses simplejson.

Even if step 3 wants to uninstall simplejson, it now needs to know that 
other installed "module distributions" (as the term is used by 
distutils) depend on it.


More information about the Distutils-SIG mailing list