Python(3.4)中的绝对或相对导入与兄弟姐妹目录

时间:2014-11-18 22:36:19

标签: python package

我的包裹要复杂得多,但是这里的所有内容都被删除了,并且更容易阅读:

sound/                         
      __init__.py               
      formats/                 
              __init__.py
              wavread.py
              wavwrite.py
      effects/                  
              __init__.py
              echo.py

(注意:我从the official tutorial

借用了这个结构

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

wavwrite.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'

这一切对我来说都是正确的,这取决于我如何理解这应该有效,并且它让我疯了。它必须是我想念的简单事物。

1 个答案:

答案 0 :(得分:1)

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

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

from effects import echo

这个功能,但它看起来非常难看,似乎应该没有必要。任何人都可以改进吗?