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

时间:2020-03-10 18:10:12

标签: python python-import

将包导入多个文件的最典型方法是什么?是导入到通用模块然后再导入该模块的最佳方法,还是有办法在__init__.py之类的地方做到这一点?

这是我要避免的重复:

file1.py

from typing import NoReturn
...

file2.py

from typing import NoReturn
...

file3.py

from typing import NoReturn
...

1 个答案:

答案 0 :(得分:1)

实际上没有。 NoReturn或任何东西都必须从某个地方导入。

您可以像这样从“外部”向模块“注入”属性:

# this is __init__py

from typing import NoReturn

from . import file1
from . import file2

file1.NoReturn = file2.NoReturn = NoReturn

但是:

  • 这是一个丑陋的黑客,
  • 该属性是在导入后添加的,因此用途有限:

# this is file1.py

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