[Python-ideas] Provide a way to import module without exec body
Neil Schemenauer
nas-python-ideas at arctrix.com
Fri Dec 1 03:13:37 EST 2017
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(). My hackish solution is to set properties
on __spec__ and then have PyImport_ImportModuleLevelObject() do the
exec().
More information about the Python-ideas
mailing list