Python:互相导入

时间:2017-05-25 11:27:52

标签: python

我知道这个问题有一些问题: Python files - import from each other

但是这个解决方案并不适合我。

这是目录结构:

├── tester.py
└── utility
    ├── __init__.py
    ├── analysis.py
    └── util.py

__初始化__。PY

from .analysis import *
from .util import *

analysis.py

import util


def funcA():
    print("a")

util.py

import analysis

def funcB():
    print("b")

但是会发生这种情况,

ImportError: No module named 'util'

我希望以我定义的方式__init__.py为主。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

这是循环进口的典型案例。 analysisutil导入,util从分析导入。虽然您可以通过在函数/方法中导入它在运行时发生来解决问题,但我建议改进代码的设计。

通常,循环导入错误表明代码设计存在问题。在您的情况下,analysis文件和util文件中的代码一起属于单个文件,或者您需要将这两个文件的公共内容存储在单独的common文件中,从两个文件中的common导入,而不是从彼此导入。