为什么`importlib.resources`需要`__init __。py`?

时间:2019-06-19 02:22:31

标签: python-3.x python-import

编写包含示例数据文件等资源的python软件包时,为什么在(子)软件包中必须有__init__.py? (或者这仅仅是3.7之前的怪癖?)

当前推荐的访问资源的方式是使用importlib.resources(或在3.7之前的版本importlib_resources中;而不是pkg_resources,它存在性能问题或__file__的操作,易碎,具体取决于分发方法)。但是,只有在存在__init__.py文件(可以为空)的情况下,这才检测包目录中的资源。

Python长期以来一直不要求使用__init__.py文件(例如,Guido addressed引起争议的版本,早于2.5版),现在(自PEP420起)省略了任何空的{{1 }}产生隐式命名空间包(并且还允许在单独的目录中拆分单个包)。但是出于某种原因,__init__.py至少不支持此功能?

0 个答案:

没有答案