将包导入目录中的所有模块

Importing a package into all modules in a directory

将一个包导入多个文件的最规范的方法是什么?是导入一个公共模块然后导入它的最佳方法,还是有办法在 __init__.py?

之类的地方进行

这是我要避免的重复:

file1.py

from typing import NoReturn
...

file2.py

from typing import NoReturn
...

file3.py

from typing import NoReturn
...

几乎没有。 NoReturn 或任何必须从某处导入。

您可以 "inject" 来自 "outside" 的模块的属性,如下所示:

# this is __init__py

from typing import NoReturn

from . import file1
from . import file2

file1.NoReturn = file2.NoReturn = NoReturn

但是:

  • 这是一个丑陋的 hack,
  • 该属性是导入后添加的,所以用途有限:

# this is file1.py

def func() -> NoReturn:   # will fail, NoReturn undefined at import time
    raise ...