我想知道是否有人对在 init 文件中延迟加载导入有任何建议?我目前有以下文件夹结构:
/mypackage
__init__.py
/core
__init__.py
mymodule.py
mymodule2.py
核心文件夹中的 init.py 文件具有以下导入:
from mymodule import MyModule
from mymodule2 import MyModule2
这样我就可以做到:
from mypackage.core import MyModule, MyModule2
但是,在包init.py 文件中,我有另一个导入:
from core.exc import MyModuleException
这有这样的效果,每当我在 python 中导入我的包时,默认情况下会导入 MyModule 和 MyModule2,因为核心 init.py 文件已经运行。
我想做的是仅在运行以下代码时而不是之前导入这些模块:
from mypackage.core import MyModule, MyModule2
有什么想法吗?
非常感谢。
请您参考如下方法:
除非我误解了你的意图,否则这实际上是可能的,但需要一些魔法。
基本上,子类 types.ModuleType 并覆盖 __getattr__ 以按需导入。
查看 Werkzeug init.py举个例子。
