无法弄清楚如何解决这个循环导入
Can't figure out how to solve this circular import
我将一些功能拆分到一个单独的文件中。找到函数和辅助函数。设置所有路径并导入其他文件,以便在必要时仍然可以调用所有内容。但是从原始文件中删除未使用的导入后,它似乎会出现循环导入错误。
所以有一个未使用的导入,虽然在那里,每个测试 (524) 都成功,但由于未使用的导入,无法推送分支。如果我们删除导入,我认为测试将进入循环导入并且根本不会开始。
我尝试的第一件事是更改有关导入语句:from /module import /object --> import module
这使测试开始,但之后一切都出错了。
在那之后,我试图通过循环导入路径找到一种方法,但我只是忘记了一切,我什至不知道它是否是一个解决方案。
`
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'
`
如果您在 /home/user/projects/.../nsx/utils.py
文件中使用导入的 Ive
,在某些方法或函数中,那么您应该从文件导入语句的顶部删除导入语句(即 from ive.models import Ive
)(如果你这样做),动态导入意味着将导入语句放在方法或函数中使用 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
我将一些功能拆分到一个单独的文件中。找到函数和辅助函数。设置所有路径并导入其他文件,以便在必要时仍然可以调用所有内容。但是从原始文件中删除未使用的导入后,它似乎会出现循环导入错误。
所以有一个未使用的导入,虽然在那里,每个测试 (524) 都成功,但由于未使用的导入,无法推送分支。如果我们删除导入,我认为测试将进入循环导入并且根本不会开始。
我尝试的第一件事是更改有关导入语句:from /module import /object --> import module
这使测试开始,但之后一切都出错了。
在那之后,我试图通过循环导入路径找到一种方法,但我只是忘记了一切,我什至不知道它是否是一个解决方案。
`
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'
`
如果您在 /home/user/projects/.../nsx/utils.py
文件中使用导入的 Ive
,在某些方法或函数中,那么您应该从文件导入语句的顶部删除导入语句(即 from ive.models import Ive
)(如果你这样做),动态导入意味着将导入语句放在方法或函数中使用 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