我的包结构如下:
myPackage
-- __init__.py <-- empty
-- signal.py
-- plot.py
signal.py 包含:
from plot import plot_signal
def build_filter():
...
def other_function():
plot_signal()
plot.py 包含:
from signal import build_filter
def plot_signal():
...
def other_function():
build_filter()
我有一个脚本,使用这个包的内容,大概是这样的:
import myPackage as mp
mp.plot.plot_signal()
当我运行它时,出现了一个属性错误:
模块“myPackage”没有“plot”属性
。我不确定为什么它把
plot
称为属性,而它是我的包中的一个模块,或者为什么它把myPackage
称为一个模块。然后我尝试导入我的包并以不同的方式调用函数:
from myPackage import plot, signal
plot.plot_signal()
然而,现在我遇到了一个导入错误:
cannot import name 'build_filter'
。回溯引用了plot.py
,在那里它尝试从兄弟模块导入build_filter()
函数。我想这与两个模块相互使用函数并递归地导入另一个模块有关。
应该如何正确组织这个包,使兄弟模块能够相互导入函数?