Насколько я знаю, вы не можете сделать модуль подпакета доступным в пространстве имен основного пакета, как вы пытались:
import mainpackage.module
ищет модуль в подкаталоге mainpackage
, а не влюбые другие (более глубокие) подкаталоги.
То, что вы пробовали в mainpackage\__init.py__
, правильно.Ваш
from .subpackage import module
сделает модуль доступным на уровне mainpackage
.Если вы введете консоль IPython, то
import mainpackage
mainpackage.module
выдаст следующий вывод
<module 'mainpackage.subpackage.module' from 'your\path\mainpackage\subpackage\module.py'>
, но import mainpackage.module
все равно не будет работать.Если вы теперь хотите использовать module
в качестве экземпляра, вы должны использовать
from mainpackage import module
, что позволит вам использовать вашу функцию следующим образом
module.test