On-demand imports, taken from mercurial
Delays loading of modules until they are actually used. Perfect for Python apps that need to be snappy like command-line utils. Source-code derived from mercurial.
To enable, write
import demandimport; demandimport.enable()
Imports of the following form will be delayed
import a, b.c import a.b as c from a import b, c # a will be loaded immediately, though
These imports with not be delayed
from a import * b = __import__(a)
Delayed loading will confuse some third-party modules. In that case you can disable the delay for just that module. For example
There are also versions that can be used with with
with demandimport.enabled(): # do something with demandimport.disabled(): import troublesome.module with demandimport.ignored('test'): import other.troublemaker
To install demandimport, simply run:
pip install demandimport
- Python 3.6
- Add sip to the default ignore list. #6
- Add is_loaded and is_proxy. Thanks-to: github.com/poke1024
- Fixed issue #2: import a.b.c will incorrectly try to import b.c
- Relicense GPL version 2 or later (GPLv2+)
- Do not delay ImportError in a special case.
- Add optional logging (for debugging)
- Fixed issue #1: import a.b in a module a.c was incorrectly executed as a relative import c.
- Improve thread safety
- Moved to zest.releaser
- Add some basic unittests
- Python 3 support
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.