如何修复导入的循环依赖项

2024-04-19 09:44:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个文件:

测试导入模块:

#import moduleTwo
import moduleOne

hiString = "Hi!"

moduleOne.sayHi()

模块:

import moduleTwo

class sayHi():
    moduleTwo.printHi()

模块网络:

import testimports

def printHi():
    print(testimports.hiString)

如果我运行testimports,我得到:

Traceback (most recent call last):
  File "..file path snipped../testimports/src/testimports.py", line 2, in <module>
    import moduleOne
  File "..file path snipped../testimports/src/moduleOne.py", line 1, in <module>
    import moduleTwo
  File "..file path snipped../testimports/src/moduleTwo.py", line 1, in <module>
    import testimports
  File "..file path snipped../testimports/src/testimports.py", line 6, in <module>
    moduleOne.sayHi()
AttributeError: 'module' object has no attribute 'sayHi'

但是,如果我取消对testimportsimport moduleTwo行的注释,程序将在停止工作之前到达这一点:

Traceback (most recent call last):
  File "..file path snipped../testimports/src/testimports.py", line 1, in <module>
    import moduleTwo
  File "..file path snipped../testimports/src/moduleTwo.py", line 1, in <module>
    import testimports
  File "..file path snipped../testimports/src/testimports.py", line 2, in <module>
    import moduleOne
  File "..file path snipped../testimports/src/moduleOne.py", line 3, in <module>
    class sayHi():
  File "..file path snipped../testimports/src/moduleOne.py", line 4, in sayHi
    moduleTwo.printHi()
AttributeError: 'module' object has no attribute 'printHi'

如何解决这个循环依赖问题?


Tags: pathinpyimportsrclinefilemodule