Skip to main content
 首页 » 编程设计

python之延迟加载模块导入 __init__.py 文件 python

2025年05月04日12jackei

我想知道是否有人对在 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举个例子。