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