У меня проблемы с пониманием того, как import
, абсолютный и относительный, работает в Python.
Я воспроизведу свой рабочий каталог и для краткости опущу некоторые файлы:
A/
B/
__init__.py
main.py
C/
__init__.py
module1.py
module2.py
main.py
необходимо f1
и f2
с module1.py
. module1.py
нужно f3
из module2.py
.
После того, как я поработал и прочитал документацию, мне удалось импортировать функции в мой файл main.py
из моего файла module1.py
. Внутри main.py
мне пришлось сделать следующее:
from .C.module1 import f1, f2
.
module1.py
зависит от функций из module2.py
. Это тривиально: внутри module1.py
:
from module2 import f3
.
Таким образом, я могу позвонить module1.py
напрямую, и он загрузит f3
; однако в моем файле main.py (кстати, Flask) он не загружается, потому что module1.py
выдает ModuleNotFoundError: No module named 'module2'
. Я думаю, что это связано с тем, что я сейчас в другом каталоге. В любом случае, если в module1.py
я изменю from module2 import f3
на from .module2 import f3
, main.py
будет работать, но тогда я не могу вызвать файл module1.py
напрямую, потому что он вызовет исключение ModuleNotFoundError: No module named '__main__.module2'; '__main__' is not a package
.
РЕДАКТИРОВАТЬ : случайно поменялись именами.
Обратите внимание, что у меня есть __init__.py
в обоих каталогах / пакетах. Что я должен сделать, чтобы оба main.py
и module1.py
работали?