我有一个简单的 Python 导入问题。我有一个正在导入模块B的模块(我们称之为A)。模块 B 导入了许多其他模块 C、D、E、F 等。我希望模块 A 能够使用模块 C、D、E、F 等。有没有简单的方法可以做到这一点?我不想直接从 A 导入 C、D、E、F 等。
我想要完成的是为编写模块 A 的脚本开发人员提供一个 API。所以,我希望模块 A 只需要包含模块 B,它是 API 的主要入口点,并在API。
你可以做...
from B import *
...在模块 A 内(尽管您需要确保模块 B 内没有其他任何东西与模块 A 内的任何东西同名,否则您将遇到命名空间冲突)。
一旦你这样做了,你可以做...
C.blah()
D.testing.meh()
...像往常一样,在模块 A 内。
或者,更好的解决方案是在模块 A 中执行以下操作:
import B
B.C.blah()
B.D.testing.meh()
您可以from ... import *
在 B 中使用。此后,来自 C、D 的所有定义都将在 B 命名空间中可用。但是这种解决方案对于大量代码并不总是很方便,它会导致混乱。
一个.py:
import b
b.foo()
b.py:
from c import *
from d import *
c.py:
def foo():
pass
您可以from ... import *
在 A 和 B 文件中使用。在此之后,可以使用 B 或 C 或 D 中的所有定义而不会混淆。
一个.py:
from B import *
fun_c()
B.py:
from C import *
C.py:
def fun_c():
pass