Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中的循环导入_Python_Python 3.x - Fatal编程技术网

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
语义,以防止内存泄漏。