如何将不同模块中的选定对象导入到\uuu init\uuuuy.py中?

2024-04-25 02:13:51 发布

您现在位置:Python中文网/ 问答频道 /正文

给定以下程序包:

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。我试着在__init__.py内使用importlib,但毫无结果:(

任何帮助都是经过深思熟虑的


Tags: orpyimportpackagestringfooinitis
1条回答
网友
1楼 · 发布于 2024-04-25 02:13:51

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

在python文件中的__all__下给出所有要向外部公开的函数

eg在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导入

相关问题 更多 >