Python复杂子包导入

2024-03-29 15:38:38 发布

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

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

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,即导入子包,但仍然将它们绑定到父包。有什么好办法吗?你知道吗

(我不知道这个问题的标题是什么,如果有人有更好的标题,我会改的。)


Tags: 模块方法frompyimport标题内容foo
2条回答

你试过:

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  

您不需要导入__init__.py中的任何内容(只需确保每个包在Python<;3.3上都有这个文件)。你知道吗

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

from A.B.a import foo

相关问题 更多 >