1

我在另一个包中有一个非常复杂的包树,如下所示

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使用来自的东西A.B,导致一个ImportError。我正在寻找的是一种方法from A import B as A.B,即导入子包但是仍然让它们绑定到父包。有什么好的方法吗?

(我不确定什么标题体现了这个问题,如果有人有更好的标题,那么我会改变它。)

4

2 回答 2

0

你不需要导入任何东西__init__.py(只要确保每个包在 Python <3.3 上都有这个文件)。

如果您需要A.B.a.foo()在模块中使用函数,请在其中添加相应的导入:

from A.B.a import foo
于 2013-06-05T05:34:04.623 回答
0

你试过了吗:

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  
于 2013-06-05T05:24:29.613 回答