Возможно, самый управляемый способ - вообще не использовать from ... import
:
import APIs.submodule1
import APIs.submodule2
<...>
APIs.submodule1.main(<...>)
Я предпочитаю этот способ всякий раз, когда могу, потому что он позволяет мне мгновенно видеть, что происходит откуда при навигации по этомукод позже.
Если имеется много подмодулей для импорта, логика в пакете __init__.py
(, которая запускается при первом импорте пакета или любого его подмодуля ), может импортировать их такчтобы не повторять этот код в каждой программе:
APIs\__init__.py
:
import .submodule1 #or import just `main's instead if you don't need anything else
import .submodule2
<...>
Все, что вы поместите в пространство имен пакета, будет видно в нем, если вы импортируете только пакет:
your_program.py
:
import APIs
<...>
APIs.submodule1.main(<...>)
С этой логикой вы все еще можете сократить ввод 1023 *, набрав from APIs import *
, получив submodule1
, submodule2
и т. Д. В свое пространство имен, котороеможет быть достаточно, чтобы «мгновенно увидеть, что происходит откуда», если имена подмодулей достаточно уникальны.
Наконец, вы можете уменьшить повторение кода:
import importlib
for module in ('submodule1','submodule2',<...>):
vars()[module] = importlib.import_module(module,'APIs')
del module, importlib
Но это затруднит поиск рефералапересекает через кодовую базу.Таким образом, весь импорт в упаковке выглядит предпочтительнее, потому что это нужно сделать только один раз.