[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