0

我有一个简单的 Python 导入问题。我有一个正在导入模块B的模块(我们称之为A。模块 B 导入了许多其他模块 C、D、E、F 等。我希望模块 A 能够使用模块 C、D、E、F 等。有没有简单的方法可以做到这一点?我不想直接从 A 导入 C、D、E、F 等。

我想要完成的是为编写模块 A 的脚本开发人员提供一个 API。所以,我希望模块 A 只需要包含模块 B,它是 API 的主要入口点,并在API。

4

3 回答 3

2

你可以做...

from B import *

...在模块 A 内(尽管您需要确保模块 B 内没有其他任何东西与模块 A 内的任何东西同名,否则您将遇到命名空间冲突)。

一旦你这样做了,你可以做...

C.blah()
D.testing.meh()

...像往常一样,在模块 A 内。

或者,更好的解决方案是在模块 A 中执行以下操作:

import B

B.C.blah()
B.D.testing.meh()
于 2012-08-10T17:55:06.937 回答
0

您可以from ... import *在 B 中使用。此后,来自 C、D 的所有定义都将在 B 命名空间中可用。但是这种解决方案对于大量代码并不总是很方便,它会导致混乱。

一个.py:

import b
b.foo()

b.py:

from c import *
from d import *

c.py:

def foo():
    pass
于 2012-08-10T17:58:21.977 回答
0

您可以from ... import *在 A 和 B 文件中使用。在此之后,可以使用 B 或 C 或 D 中的所有定义而不会混淆。

一个.py:

from B import *
fun_c()

B.py:

from C import *

C.py:

def fun_c():
    pass
于 2017-01-16T06:28:40.060 回答