你好,我正在构建自己的包,并对__all__有一个问题。
除了显式地输入模块中的每个函数之外,是否有其他简洁的方式来定义__all__?
我觉得这很繁琐...
我正在尝试编写一些代码,用于包装常用库,例如numpy、pytorch、os等。问题是,当我导入我的包时,我使用的库也被导入了。
我想要导入我定义的每个函数/类,但我不想导入我在过程中使用的第三方库。
我在我的__init__.py
中使用from .submodule import *
,以便可以直接访问子模块中的函数。(就像我们可以直接从顶级包中访问函数一样,如np.sum()
,torch.sum()
)
我的子模块有很多函数,我想将它们全部导入到__init__.py
中,但不包括我使用的第三方包。
我发现__all__定义了在调用from package import *
时要导入的内容。
例如:
utils.py
__all__ = ['a']
def a():
pass
def b():
pass
__init__.py
from .utils import *
并且
>>> 导入包
>>> 包.a()
无
>>> 包.b()
名称错误:'package.b' 未定义
我想要的是这样的结果
__all__ = Some_neat_fancy_method()
我尝试了locals()和dir(),但是一路上迷失了方向。你有什么建议吗?
__all__
。 - juanpa.arrivillaga__init__
文件中使用__all__
并定义要使其可用的包。 - sahasrara62