Как заставить функцию появляться в корне подпакета Python - PullRequest
0 голосов
/ 10 марта 2019

У меня следующая структура пакета:

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

, но это имеет две проблемы:

  1. Когда я выполняю import mypackage.inputsubpackage as mi Я все еще вижу great_functions1 при автозаполнении с mi., которое я не хочу видеть, и
  2. Требуется ручная работа по добавлению к __init__.py(2) по мере роста моего пакета (в основном в подпакетах),

Есть ли хороший способ решения этих проблем с помощью умного использования файлов __init__.py, которые я пропустил?В идеале все классы / функции, которые есть в моих файлах .py, должны быть доступны через mi., но ни один из импортированных (внешних) пакетов в моих great_functions[1-9].py файлах.

...