Python 3中的循环导入
答案让我相信模块的循环导入应该有效,但我在以下程序包中遇到了麻烦: 文件结构:Python 3中的循环导入,python,python-3.x,Python,Python 3.x,答案让我相信模块的循环导入应该有效,但我在以下程序包中遇到了麻烦: 文件结构: my_package --| my_package |-- __init__.py |-- mod1.py |-- mod2.py --| setup.py \uuuu init\uuuuu.py: from . import mod1, mod2 from . import mod2 from . import mod1 mod1.py: from . import mod1, mo
my_package
--| my_package
|-- __init__.py
|-- mod1.py
|-- mod2.py
--| setup.py
\uuuu init\uuuuu.py
:
from . import mod1, mod2
from . import mod2
from . import mod1
mod1.py
:
from . import mod1, mod2
from . import mod2
from . import mod1
mod2.py
:
from . import mod1, mod2
from . import mod2
from . import mod1
尝试导入包时出现错误:
ImportError:无法导入名称“mod1”
我该怎么做才能使这些导入生效?您是否检查了第二个答案?(不过,我强烈建议重组程序以避免循环导入。)Python通常不允许循环引用,因为它会防止某些垃圾收集器触发并造成内存泄漏。我发现,如果你设计好了你的结构,你就永远不需要循环依赖关系。如果mod1需要mod2中的东西,反之亦然,请将常用的东西放在第三个模块中,或者加入模块。@EricThomas:不,循环引用是完全允许的。他们甚至在最新版本中更改了
\uu del\uu
语义,以防止内存泄漏。您是否检查了第二个答案?(不过,我强烈建议重组程序以避免循环导入。)Python通常不允许循环引用,因为它会防止某些垃圾收集器触发并造成内存泄漏。我发现,如果你设计好了你的结构,你就永远不需要循环依赖关系。如果mod1需要mod2中的东西,反之亦然,请将常用的东西放在第三个模块中,或者加入模块。@EricThomas:不,循环引用是完全允许的。他们甚至在最新版本中更改了\uu del\uu
语义,以防止内存泄漏。