[Python-Dev] PEP: Lazy module imports and post import hook

Nick Coghlan ncoghlan at gmail.com
Wed Jan 9 16:38:04 CET 2008


Nick Craig-Wood wrote:
> Christian Heimes <lists at cheimes.de> wrote:
>>  I've attached the first public draft of my first PEP.
> 
> Some brief thoughts from me on the PEP...
> 
> Post import hooks sound great and a good idea.
> 
> Lazy importing sounds like a recipe for hard to find bugs and rather
> too magic for my taste.
> 
> Perhaps you should separate these two things into two PEPs and
> implementations?
> 

And now that I think about it some more, so long as the post-import hook 
implementation recognises that lazy import libraries *exist*, all it 
really needs to do is provide a way for the externally implemented lazy 
import to trigger whatever import hooks have been registered when the 
module is finally loaded.

So count me in with the people that think it is worth separating the two 
ideas - just focus in the PEP on the API needed to make it possible for 
3rd party implementation of lazy imports to interoperate correctly with 
the post-import hooks, without proposing to add such an implementation 
directly to the standard library.

In the hands of power users lazy imports can definitely be a useful 
trick to speed up script start times. Those kinds of users will know 
where to find one of the existing solutions, or will write their own (as 
the responses to this thread seem to suggest). But I still have deep 
reservations about making them available as a standard library feature. 
My main concern is that the import lock is something Python users 
typically don't have to worry about (aside from the 'don't spawn a 
thread as a side effect of importing' guideline), but making the 
acquisition of the import lock implicit in accessing a module attribute 
is going to lead to some very nasty surprises for users that aren't as 
intimately familiar with the underlying mechanics of the import system.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-Dev mailing list