I want lazy module loading in Python to keep runtime requirements or start-up times low and splitting the code into sub-modules would be cumbersome. My preferred implementation:

jinja2 = None

class Handler(...):
    ...
    def render_with_jinja2(self, values, template_name):
        global jinja2
        if not jinja2:
            import jinja2
        env = jinja2.Environment(...)
        ...

Is there a canonical/better way to implement lazy module loading?

Edit
Report