Python(3.4)中的绝对或相对导入与兄弟目录[重复]
Posted
技术标签:
【中文标题】Python(3.4)中的绝对或相对导入与兄弟目录[重复]【英文标题】:Absolute or Relative Imports in Python (3.4) with Sibling Directories [duplicate] 【发布时间】:2015-01-16 07:11:24 【问题描述】:我的包要复杂得多,但这里的所有内容都被剥离并更易于阅读作为示例:
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'
根据我对这应该如何工作的理解,这一切对我来说都是正确的,这让我发疯了。它必须是我缺少的一些简单的东西。
【问题讨论】:
试试“from effects import echo”,效果包和 wavwrite 在同一个包“格式”中可能会起作用 @TanveerAlam,我实际上尝试过“from effects import echo”和“import effects.echo as echo”,都产生结果“ImportError: No module named 'effects'” 导入应该类似于'from .effects import echo' 【参考方案1】:于是我找到了答案elsewhere on SO,但我不喜欢它:
from sys import path
from os.path import dirname as dir
path.append(dir(path[0]))
from effects import echo
这个功能,但是看起来很丑,看起来应该是没必要的。任何人都可以对此进行改进吗?
【讨论】:
以上是关于Python(3.4)中的绝对或相对导入与兄弟目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章