TLDR: Я хочу знать, можно получить доступ к вложенному подпакету (расположенному по адресу mypackage.subpackage.target_package), используя псевдоним с точечной записью mypackage.target_package. т. е. можете ли вы добавить mypackage.target_package в пространство имен верхнего уровня mypackage?
Полное объяснение:
Я разработка пакета Python, который изначально имел следующую структуру:
Код: Выделить всё
mypackage
├── __init__.py
├── subpackage
│ ├── __init__.py
│ └── module_b.py
└── target_package
├── __init__.py
└── module_c.py
Новая структура:
Код: Выделить всё
mypackage
├── __init__.py
└── subpackage
├── __init__.py
├── module_b.py
└── target_package
├── __init__.py
└── module_c.py
Я пробовал много разных комбинаций импорта в трех файлах _init_.py и им удалось сделать модули внутри target_package (например, Module_c) доступными на этом уровне.
В настоящее время в самом внутреннем _init_.py, содержимое
Код: Выделить всё
# mypackage/subpackage/target_package/__init__.py
from . import
Код: Выделить всё
# mypackage/subpackage/__init__.py
Код: Выделить всё
# mypackage/__init__.py
from .subpackage import target_package
Код: Выделить всё
from mypackage import target_packageКод: Выделить всё
import mypackage.target_packageКакой совет? Есть ли способ сделать то, что я предлагаю? Противоречит ли это лучшим практикам? Стоит ли мне отказаться от обратной совместимости?
Подробнее здесь: https://stackoverflow.com/questions/783 ... ckage-usin