Почему для `importlib.resources` требуется` __init __. Py`? - PullRequest
0 голосов
/ 19 июня 2019

При написании пакета python, включающего такие ресурсы, как примеры файлов данных, почему необходимо иметь __init__.py в (суб) пакете? (Или это только предварительная версия 3.7?)

Текущий рекомендуемый способ доступа к ресурсам - это использование importlib.resources (или в версиях до 3.7 importlib_resources; вместо pkg_resources, у которого были проблемы с производительностью или __file__ манипуляции, которые являются хрупкими в зависимости от методов распространения). Тем не менее, это только обнаруживает ресурсы в каталоге пакета, если есть файл __init__.py (который может быть пустым).

Python уже давно отказывался от необходимости __init__.py файлов (например, Гвидо адресован споры / вилы в версии 2.5), и теперь (с тех пор как PEP420 ) пропускает любые пустые __init__.py приводит к неявному пакету пространства имен (а также позволяет разбивать один пакет на отдельные каталоги). Но почему-то importlib_resources хотя бы не поддерживает это?

...