[Python-ideas] Provide a way to import module without exec body
Nick Coghlan
ncoghlan at gmail.com
Fri Dec 1 03:37:26 EST 2017
On 1 December 2017 at 18:13, Neil Schemenauer
<nas-python-ideas at arctrix.com> wrote:
> I have been working on reducing Python statup time. It would be
> nice if there was some way to load a module into memory without exec
> of its body code. I'm sure other people have wished for this.
>
> Perhaps there could be a new special function, similar to __import__
> for this purpose. E.g. __load_module__(). To actually execute the
> module, I had the idea to make module objects callable, i.e. tp_call
> for PyModule_Type. That's a little too cute though and will cause
> confusion. Maybe instead, add a function attribute to modules, e.g.
> mod.__exec__().
>
> I have a little experimental code, just a small step:
>
> https://github.com/nascheme/cpython/tree/import_defer_exec
>
> We need importlib to give us the module object and the bytecode
> without doing the exec().
What does actually doing the load give that simply calling
https://docs.python.org/3/library/importlib.html#importlib.util.find_spec
doesn't?
At that point, you know the module exists, and how to load it, which
is all a lazy loading implementations really needs to be confident
that a subsequent actual execution attempt will be able to start.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list