无法弄清楚如何解决此循环导入

时间:2019-09-06 12:39:14

标签: python-3.x django-rest-framework python-3.6

我将一些功能拆分到一个单独的文件中。找到了功能和助手功能。设置所有路径并导入其他文件,以便在必要时仍可以调用所有文件。但是,从原始文件中删除未使用的导入后,它似乎出现了循环导入错误。

因此存在未使用的导入,并且在那里,每个测试(524)均成功,但是由于未使用的导入而无法推送分支。如果我们删除导入,我认为测试将进入循环导入,并且根本不会开始。

我尝试做的第一件事是从/ module import / object-> import module更改有关import语句

这使测试开始,但是之后一切都出错了。

在那之后,我试图找到一种通过循环导入路径的方法,但是我却一无所获,而我甚至不知道这是否是解决方案。

`

Traceback (most recent call last):
    File "/home/user/../.py", line 2, in <module>
    from x.model import x
    File "/home/user/../.py", line 1, in <module>
    import A
    File "/home/user/../.py", line 4, in <module>
    import B
    File "/home/user/../.py", line 1, in <module>
    import C
    File "/home/user/../.py", line 9, in <module>
    import D
    File "/home/user/../.py", line 4, in <module>
    import E
    File "/home/user/../.py", line 9, in <module>
    from x.model import x
ImportError: cannot import name 'x'
`

1 个答案:

答案 0 :(得分:0)

如果您正在Ive文件中的某些方法或函数中使用导入的/home/user/projects/.../nsx/utils.py,则应从文件导入语句的顶部删除导入语句(即from ive.models import Ive)(如果您这样做),并且动态导入意味着将import语句放在方法或函数内使用Ive的位置。

# Assume `/home/user/projects/.../nsx/utils.py` file

# Don't import Ive here
# from ive.models import Ive

def func():
     # import here
    from ive.models import Ive
    # use Ive here