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”