У меня следующая структура пакета:
mypkg
├── mymodule
│ ├── __init__.py
│ └── ...
├── mylib.py
└── script.py
В script.py
я могу сделать from .mymodule import X
и from .mylib import Y
и отлично работает как для Python 2, так и для Python 3.
В Python 2 я могу сделать import mymodule
и import mylib
, и он отлично работает, а потом я могу сделать mymodule.X
или mylib.Y
.
В Python 3 я не могу сделать import .mymodule
или import .mylib
(синтаксическая ошибка), и если я удаляю начальную точку, я получаю: ModuleNotFoundError: No module named 'mymodule'
и ModuleNotFoundError: No module named 'mylib'
.
Прочитав этот вопрос Я понимаю, что мне нужна начальная точка, но почемуя получаю синтаксическую ошибку?Как я могу заставить эти импорты работать как для Python 2, так и для 3?
Обновление : Для дальнейшего использования моя структура пакета теперь:
mypkg
├── __init__.py
├── mymodule
│ ├── __init__.py
│ └── ...
├── mylib.py
└── script.py