Python(3.4)中带有兄弟目录的绝对或相对导入

Python(3.4)中带有兄弟目录的绝对或相对导入,python,package,Python,Package,我的软件包要复杂得多,但这里的所有内容都被剥离出来,并作为一个例子更易于阅读: sound/ __init__.py formats/ __init__.py wavread.py wavwrite.py effects/

我的软件包要复杂得多,但这里的所有内容都被剥离出来,并作为一个例子更易于阅读:

sound/                         
      __init__.py               
      formats/                 
              __init__.py
              wavread.py
              wavwrite.py
      effects/                  
              __init__.py
              echo.py
(注:我从中借用了此结构)

我希望能够从wavswrite.py引用echo.py

在wavswrite.py中,我是这样引用的:

from ..effects import echo
from effects import echo
我得到了这个错误:

File "C:\sound\formats\wavwrite.py", line 1, in <module>
   from ..effects import echo
SystemError: Parent module '' not loaded, cannot perform relative import
ImportError: No module named 'effects'

我得到了这个错误:

File "C:\sound\formats\wavwrite.py", line 1, in <module>
   from ..effects import echo
SystemError: Parent module '' not loaded, cannot perform relative import
ImportError: No module named 'effects'
这一切在我看来都是正确的,因为我知道这应该是可行的,这让我发疯。一定是我遗漏了一些简单的东西。

所以我找到了答案,但我不喜欢它:

from sys import path
from os.path import dirname as dir
path.append(dir(path[0]))

from effects import echo

这个功能,但它看起来非常丑陋,似乎它应该是不必要的。有人能改进这一点吗?

只需尝试“从效果导入回音”,它可能会工作,因为效果包和wavwrite使用相同的包“格式”@TanveerAlam,我实际上已经尝试了“从效果导入回音”和“导入效果.echo作为回音”,两者都会产生“ImportError:没有名为“效果”的模块”的结果导入应类似于“from.effects导入echo”