2017-05-25 70 views
1

我知道有关于这个问题的一些问题: Python files - import from each other的Python:进口对方

但这种解决方案并不为我工作。

这是目录结构:

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

__init__.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我定义的方式。

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

+0

发生错误在哪个模块? – stybl

+0

请参阅[此链接的清晰说明](https://stackoverflow.com/questions/11698530/two-python-modules-require-each-others-contents-can-that-work) – gowtham

+0

您的示例应提供一些说明*为什么*每个模块需要导入另一个。 – chepner

回答

2

这是一个循环进口的经典案例。 analysisutilutil正在导入分析。虽然你可以通过导入一个函数/方法来解决这个问题,但它会在运行时发生,所以我建议改进代码的设计。

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