如果我有像这样的图书馆:
MyPackage的:
__init__.py
SubPackage1
__init__.py
__init__.py
但我希望用户可以直接导入像import MyPackage.moduleA
这样的moduleA。我可以通过在MyPackage/__init__.py
中编写一些规则来实现这一点吗?
答案 0 :(得分:3)
在MyPackage/__init__.py
中,从子包中导入您想要的模块:
from __future__ import absolute_import # Python 3 import behaviour
from .SubPackage1 import moduleA
from .SubPackage2 import moduleD
这会使moduleA
中的moduleD
和MyPackage
全局变量。然后您可以使用:
from MyPackage import moduleA
并且它将绑定到同一个模块,或者
import MyPackage
myPackage.moduleA
直接访问该模块。
但是,无法使用
from MyPackage.moduleA import somename
因为这需要moduleA
直接居住在MyPackage中; __init__
中的全局不会将其删除。