鉴于以下包:
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',) ?
我想导入c1
,foo
和c2
成__init__.py
。显而易见的方法是在里面显式地写入导入__init__.py
:
from module1 import c1, foo
from module2 import c2
现在我可以编写源代码,例如:
import package
print(package.c1)
但是,我的目标是使用注册表列表exports
。我尝试importlib
在内部使用__init__.py
但无处可去:(
任何帮助都会被认真考虑
使用__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] 删除。
我来说两句