如何将各个模块中的选择对象导入到 __init__.py 中?

登录

鉴于以下包:

package/
|
|_ __init__.py
|
|_module1.py
|  |_c1   # c1 is a string
|  |_foo  # foo is a function
|  |_bar  # bar is a function
|  |_exports = (c1, foo)  # or maybe ('c1', 'foo') ?
|
|_module2.py
   |_c2  # c2 is a string
   |_c3  # c3 is a float
   |_exports = (c2,)  # or maybe ('c2',) ?

我想导入c1fooc2__init__.py显而易见的方法是在里面显式地写入导入__init__.py

from module1 import c1, foo
from module2 import c2

现在我可以编写源代码,例如:

import package
print(package.c1)

但是,我的目标是使用注册表列表exports我尝试importlib在内部使用__init__.py但无处可去:(

任何帮助都会被认真考虑

轮回62

使用__all__在Python文件。它是一个字符串列表,定义在模块from <module> import *上使用时将导出模块中的哪些符号

在 python 文件下,__all__给出你想对外公开的所有函数。

例如在module1.py__all__ = ['c1','foo']和在module2.py__all__=['c2']

然后在__init__.py文件中

from .module1 import * 
from  .module2 import *
__all__ = module1.__all__ + module2.__all__ 

就是这个 。然后你可以导入为from package import foo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章