我的软件包要复杂得多,但这里是一个简化的例子,以便更容易阅读:
sound/
__init__.py
formats/
__init__.py
wavread.py
wavwrite.py
effects/
__init__.py
echo.py
(注:我从官方教程中借用了这个结构)
我想要能够从中引用。
在中,我通过以下方式进行引用:
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
我有一个朋友建议我尝试使用绝对导入,但在这种情况下,我遇到了不同的问题。
在wavwrite.py中,我是这样引用的:
from effects import echo
或者
import effects.echo as echo
我得到了这个错误:
ImportError: No module named 'effects'
这在我看来似乎是正确的,基于我对它应该如何工作的理解。但它让我感到很疯狂。一定有些简单的东西我没注意到。