Импорт модулей между дочерними подпакетами в python(внутрипакетные ссылки)
Я читал документацию по модулю Python здесь: https://docs.python.org/3/tutorial/modules.html и пытался понять ссылки внутри пакета: https://docs.python.org/3/tutorial/modules.html, используя sound
Пример создания той же структуры каталогов и оставления всех файлов изначально пустыми. Согласно связанной документации:
Когда пакеты структурированы в подпакеты (как в случае со звуковым пакетом в примере), вы можете использовать абсолютный импорт, чтобы ссылаться на подмодули пакетов одного уровня. Например, если модуль sound.filters.vocoder должен использовать модуль echo в
sound.effects
пакет, он может использовать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 и попытайтесь импортировать пакет как:
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
У меня все еще есть проблемы.
Так чего мне здесь не хватает? Я думал, что абсолютный импорт был подходом для работы с подпакетами.