[Distutils] PEP 376 - from PyPM's point of view

Sridhar Ratnakumar SridharR at activestate.com
Wed Jul 15 19:38:21 CEST 2009

On Wed, 15 Jul 2009 02:01:24 -0700, Tarek Ziadé <ziade.tarek at gmail.com>  

>>> get_installed_files(local=False) -> iterator of (path, md5, size)
>> Will this also return the directories /created/ during the installation?
>> For example, will it also contain the entry "docutils" .. along with
>> "docutils/__init__.py"?
> I don't think it's necessary to add "docutils" if
> "docutils/__init__.py" is present
> But for empty directories added during installation we should add the I  
> guess.
> So, I'll add a note.

It seems that you overlooked the below paragraph.

>> If not, how is the installer (pip, pypm, etc..) supposed to know which
>> directories to remove (docutils/) and which directories not to remove
>> (site-packages/, bin/, etc..)?

Quoting from the PEP:

[quote]'(...)uninstall uses the APIs described earlier and remove all  
unique files, as long as their hash didn't change. Then it removes empty  
directories left behind.'[endquote]

Let's assume that site-packages/ contained only one package 'Foo'. Will  
uninstall('Foo') remove the site-packages/ directory just because it  
turned out to be empty after removing 'Foo'? To explain, let's assume the  
RECORD of 'Foo' contains:

$ cat RECORD

and according to what you wrote in the PEP ("it removes empty directories  
left behind"):

$ python -m distutils.util.uninstall Foo
rm /.../site-packages/Foo/__init__.py
rm /.../site-packages/Foo/bar/__init__.py
rm /.../site-packages/Foo/bar/test.py
rm empty dir /.../site-packages/Foo/bar
rm empty dir /.../site-packages/Foo/
rm empty dir /.../site-packages/        # !!!!!

it also remove the site-packages directory!

Then there is ~/python26/bin, ~/python26/include, ~/python26/etc, etc.. Do  
you see my point?

> btw: is PyPM a public project ?

If by 'public', you meant open source, then no.


More information about the Distutils-SIG mailing list