在python中导入兄弟子包之间的模块(包内引用)

时间:2016-06-07 17:17:33

标签: python python-3.x python-module

我正在阅读这里的Python模块文档:https://docs.python.org/3/tutorial/modules.html#packages并尝试了解包内引用:https://docs.python.org/3/tutorial/modules.html#intra-package-references使用sound示例创建相同的目录结构并将所有文件保留为空原来。根据链接文档:

  

当包被组织成子包时(与示例中的声音包一样),您可以使用绝对导入来引用兄弟包的子模块。例如,如果模块sound.filters.vocoder需要使用sound.effects包中的echo模块,则可以使用from sound.effects import echo

但是,当我在本地计算机上尝试此操作时,将sound/filters/vocoder.py的内容设置为:

from sound.effects import echo

按以下方式运行:

$python vocoder.py

我收到错误:

Traceback (most recent call last):
  File "vocoder.py", line 1, in <module>
    from sound.effects import echo
ImportError: No module named sound.effects

如果我进入sound目录并在iPython shell中尝试以下操作并尝试导入包:

In [2]: import filters.vocoder
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-0217a888946e> in <module>()
----> 1 import filters.vocoder

/home/rootavish/sound/filters/vocoder.py in <module>()
----> 1 from sound.effects import echo

ImportError: No module named sound.effects

In [3]: import sound.filters.vocoder
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-09d9adcc27d8> in <module>()
----> 1 import sound.filters.vocoder

ImportError: No module named sound.filters.vocoder

我还有问题。

那我在这里错过了什么?我认为绝对导入是使用子包时的方法。

0 个答案:

没有答案