При написании пакета 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
хотя бы не поддерживает это?