У меня следующая структура пакета:
mypackage/
__init__.py(1)
inputsubpackage/
__init__.py(2)
great_functions1.py
in_func1()
in_func2()
great_functions2.py
in_func3()
, и я хотел бы позвонить им со следующим:
import mypackage.inputsubpackage as mi
mi.in_func1()
mi.in_func2()
mi.in_func3()
Я добился этого, добавив следующую строку в __init__.py(1)
:
import mypackage.inputsubpackage
И добавление следующего к __init__.py(2)
:
from .great_functions1 import func1, func2
from .great_functions2 import func3
, но это имеет две проблемы:
- Когда я выполняю
import mypackage.inputsubpackage as mi
Я все еще вижу great_functions1
при автозаполнении с mi.
, которое я не хочу видеть, и - Требуется ручная работа по добавлению к
__init__.py(2)
по мере роста моего пакета (в основном в подпакетах),
Есть ли хороший способ решения этих проблем с помощью умного использования файлов __init__.py
, которые я пропустил?В идеале все классы / функции, которые есть в моих файлах .py, должны быть доступны через mi.
, но ни один из импортированных (внешних) пакетов в моих great_functions[1-9].py
файлах.