Python circular import, `from lib import module` vs `import lib.module`
我有两个python模块:
A.PY:
1 2 | import lib.b ... |
B.PY:
1 2 | import lib.a ... |
上面的示例适用于
1 | PYTHONPATH=./lib python -c 'from lib import a, b' |
但是,如果我将
有人能解释一下为什么会这样吗?我不想从
由于似乎没有直接的方法来解决循环导入问题,我采取了一种变通方法。
在我的实际用例中,模块
1 2 | def fn(): ... |
B.Py
1 2 3 4 5 | from lib import a from lib import c ... # Explicitly assign `fn` into this module. fn = c.fn |
(上面也可以用
1 2 | from lib import c ... |
这样,
在lib文件夹中有一个init文件?如果是,您有两种可能性:
1)uuu init_uuu.py为空,可以从lib导入a、b中使用。
A.Fo.B.Bar
2)在你的初始化中有导入a,b的指令,在这种情况下,你可以写
将lib.a导入为将lib.b导入为b
希望这对你有帮助