【问题标题】:Importing a package into all modules in a directory将包导入目录中的所有模块
【发布时间】:2020-03-10 18:10:12
【问题描述】:

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

这是我试图避免的重复:

file1.py

from typing import NoReturn
...

file2.py

from typing import NoReturn
...

file3.py

from typing import NoReturn
...

【问题讨论】:

  • 我真的不认为这是重复。你很好。
  • 这是python的一个设计特性。如果没有隐式导入,您必须处理将事物导入不同文件的顺序管理,这可能会很混乱。作为参考,请参阅任何大型 php 项目以及如何处理导入。
  • 感谢大家提供 Python 信息 - 也感谢反对者就问题本身的任何问题提供反馈。

标签: python python-import


【解决方案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 ...

【讨论】:

  • 谢谢。似乎每个文件中更明确的导入是要走的路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 2013-05-27
  • 2012-02-15
  • 1970-01-01
  • 2012-05-19
  • 2020-12-06
相关资源
最近更新 更多