Как я только что обнаружил, out import package
не делает модули пакета доступными через package.module. То же самое верно и для from package import subpackage
, а также from package import *
Зачем вообще импортировать пакет, если я не могу получить доступ к его подмодулям, а только к объектам, определенным в __init__.py
?
Для меня имеет смысл, что from package import *
раздувает пространство имен, что, однако, неприменимо в случае двух других способов! Я также понимаю, что загрузка всех подмодулей может занять много времени . Но я не знаю, что эти нежелательные побочные эффекты, «которые должны произойти, только если субмодуль явно импортирован», о которых упоминает автор предыдущей ссылки.
Мне кажется, что делать import package[.subpackage]
(или from package import subpackage
) абсолютно бессмысленно, если я не хочу получать доступ к объектам, предоставленным в __init__.py
.
Действительно ли эти нежелательные побочные эффекты настолько серьезны, что язык фактически должен защищать программиста от их возникновения? На самом деле, я думал, что Python немного больше о том, «Если программист хочет сделать это, пусть он сделает это».
В моем случае я действительно хочу импортировать все подмодули с одним оператором from package import subpackage
, потому что они мне нужны!
Сказать с точки зрения Python в файле __init__.py
, какие именно подмодули я имею в виду (все они!), С моей точки зрения довольно громоздко.
Пожалуйста, просветите меня. :)