我在另一个软件包中有一个非常复杂的软件包树,如下所示A\ B\ a.py b.py c.py C\ a.py b.py c.py我希望能够执行import A和访问所有子包和子模块,例如A.B.a.foo()。一种方法是A/__init__.py导入所有A的子包,但是某些子包也导入其他子包(例如,A.C使用from中的东西A.B,导致一个ImportError。我正在寻找的是一种方法from A import B as A.B,即,导入子包,但是仍然将它们绑定到父程序包。是否有一个很好的方法来做到这一点?
2 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
你试过了吗:
在A.__init__:
import B
import C
在B.__init__:
import C, a, b, c
在C.__init__:
import B, a, b, c
我用一些测试文件进行了尝试,它似乎工作正常。
In [5]: import A
In [6]: A.
A.B A.C
In [6]: A.B.
A.B.C A.B.a A.B.b A.B.c
添加回答
举报
0/150
提交
取消