#python #python-3.x #python-module #python-packaging
#python #python-3.x #python-модуль #python-упаковка
Вопрос:
Ниже приведена структура каталогов, в которой у меня возникают проблемы с импортом модулей.
.
├── A
│ └── a.py
└── B
└── C
└── b.py
Допустим, есть метод foo()
, в B/C/b.py
который нужно импортировать A/a.py
.
Однако, когда я пытаюсь импортировать foo()
, как показано ниже —
# A/a.py
from B.C import foo
Я получаю сообщение об ошибке —
unable to import 'B.C'.
Альтернативным способом, который я пробовал, было использование относительного импорта, подобного этому —
# A/a.py
from ..B.C import foo
Но опять же, я получаю сообщение об ошибке
Attempted relative import beyond top-level package.
Как именно я должен импортировать foo()
из B/C/b.py
into A/a.py
?
Ответ №1:
Вам нужно структурировать свой проект как пакет.
Добавляя __init__.py
файл, как указано здесь, вы указываете пакет верхнего уровня, поэтому вы сможете импортировать B/C/b.py с помощью команды:
from src.B.C import b
src
├── __init__.py
├── A
│ ├── a.py
│ └── __init__.py
└── B
├── __init__.py
└── C
├── __init__.py
└── b.py