【问题标题】:Can I use __init__.py to make imports available globally?我可以使用 __init__.py 使导入在全球范围内可用吗?
【发布时间】:2020-11-04 03:03:34
【问题描述】:

我的__init__.py 中有以下内容,以避免重复导入类型库:

from typing import Dict, List, Tuple

然而,当我在我的包代码中使用Dict 时,它会引发NameError 'Dict' is not defined

我必须在每个类中明确包含上述导入语句吗?

注意打字不是我自己的模块,所以不在包目录里面

【问题讨论】:

  • 你需要将它包含在每个使用它的模块中。
  • 好的,谢谢,我会接受的
  • 一般来说,可以通过即时修改builtins 模块来添加新的内置插件。见How to add builtin functions?

标签: python package python-import


【解决方案1】:

import 语句必须在您每次编程的代码的顶部(并非总是如此)。

__init__.py

from typing import Dict, List, Tuple
    ^ this will not affect main.py 
Dict(blah)
...

main.py

from typing import Dict, List, Tuple
Dict(jjjj)

【讨论】:

  • “必须在顶部(并非总是)”——嗯?
  • 脚本很简单,但是包只定义了类,我不希望最终用户在使用包时必须声明所有导入
  • 也可以走在程序中间只要在Dict()@martineau前面
  • 然后使用from typing import *@Uliw
  • 不添加到 main.py
猜你喜欢
  • 2022-01-20
  • 2016-01-03
  • 2017-01-03
  • 2010-11-25
  • 2015-09-20
  • 2012-01-13
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
相关资源
最近更新 更多