[Distutils] Cache PYTHONPATH? (Re: make unzipped eggs be the default)

P.J. Eby pje at telecommunity.com
Wed Jul 29 06:44:23 CEST 2009


At 10:35 PM 7/28/2009 -0500, Ian Bicking wrote:
>On Tue, Jul 28, 2009 at 9:40 PM, P.J. Eby<pje at telecommunity.com> wrote:
> > At 09:22 PM 7/28/2009 -0500, Ian Bicking wrote:
> >>
> >> I can see how this could go quite wrong, but maybe if installers touch
> >> some file in the library directory anytime a package is
> >> installed/reinstalled/removed/etc,
> >
> > You mean, like, the mtime of the directory itself? Â ;-)
>
>Do directory mtimes get recursively updated?  I don't think they do.

That's not necessary; if imports use a cached listdir, then the 
children will get handled recursively.

>So if you have a layout:
>
>site-packages/
>   zope/
>     interface/
>       __init__.py
>
>And you update the package and update __init__.py, the mtime of
>site-packages doesn't change, does it?

Nope, but at the top level, the fact that 'zope' is present is 
unchanged, as is the presence of an 'interface' subdirectory.


>I'm saying if there was a file in site-packages/last_updated that gets
>touched everytime an installer does anything in site-packages, then
>you could cache (between processes) the lookups.

Since each invocation of the interpreter can have a different 
PYTHONPATH, the cache has to be per-directory, not global.  If it's 
per-directory, then there's no real benefit over runtime caching, 
since you now have to open and read a file (instead of just reading 
the directory).  And as I said, it's not realistic to think that 
opening and reading a file is going to beat opening and reading a 
directory for speed.



More information about the Distutils-SIG mailing list