Относительный импорт в Python
-
09-10-2019 - |
Вопрос
Эй, все - я потянул волосы с относительным импортом в Python. Я прочитал документацию 30 раз и многочисленные сообщения здесь на так и других форумах - до сих пор не работает.
Моя структура каталогов в настоящее время выглядит так
src/
__init__.py
main.py
components/
__init__.py
expander.py
language_id.py
utilities/
__init__.py
functions.py
Я хочу Expander.py и janguage_id.py иметь доступ к модулю функций. Я запускаю Python Main.py, который доступа к модулям просто отлично с компонентами. Expander Import * и Components.language_id Import *.
Тем не менее, код внутри расширителя и Linke_id для доступа к модулю функций:
from ..utilities.functions import *
Я получаю эту ошибку:
ValueError: Attempted relative import beyond toplevel package
Я перешел на него кучу раз, и, похоже, следит за документацией. У кого-нибудь есть идеи того, что здесь не так?
Решение
Немного, я решил это:
src/
main.py
mod/
__init__.py
components/
__init__.py
expander.py
language_id.py
utilities/
__init__.py
functions.py
Main.py затем относится к подразделению как:
from mod.components.expander import *
from mod.utilities.functions import *
Expander.py и janguage_id.py есть доступ к функциям .py с:
from ..utilities.functions import *
Но интересное в том, что у меня был текстовый файл внутри каталога компонентов, которые использует experder.py. Однако во время выполнения он не мог найти файл, даже если он был в одном каталоге. Я переместил текстовый файл в тот же каталог, что и main.py, и он работал. Кажется противоборбительным.