给定以下程序包:
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
。我试着在__init__.py
内使用importlib
,但毫无结果:(
任何帮助都是经过深思熟虑的
在python文件中使用
__all__
。它是一个字符串列表,定义当在模块上使用from <module> import *
时,将导出模块中的哪些符号在python文件中的
__all__
下给出所有要向外部公开的函数eg在
module1.py
写__all__ = ['c1','foo']
和在module2.py
写__all__=['c2']
然后在
__init__.py
文件中就是这样。然后可以作为
from package import foo
导入相关问题 更多 >
编程相关推荐