存储和检索有关 Python 发行版的元数据

Store and retrieve metadata about Python distributions

我正在构建一个接受插件的系统,使用 setuptools 的 entry_points 功能来查找插件。因此,插件由发行版提供,但单个发行版可能会提供多个插件。

我想要一些方法来编码每个 发行版 的元数据,这些发行版提供一个或多个插件。简单的东西,比如错误归档 URL,但比内置的 setup 参数允许的要多一点。作为一个额外的问题,插件使用命名空间包,因此每个发行版都没有唯一的顶级包。

我已经尝试 using a setuptools extension via egg_info.writers, but that exposes a setuptools bug and anyway has some chicken-and-egg problems. I've also tried putting the metadata in setup.cfg 并通过 pkg_resources.resource_stream 阅读它,但为时已晚,一旦安装了软件包,setup.cfg 就会消失。

我可能会想出一些更深奥或非实用的想法,但我希望有某种最佳实践(甚至 "least-awful practice")可以让我遵循。

setuptools 最稳定、最可靠的部分似乎是 entry_points。

我采用的解决方案包括使用一个额外的入口点组来定位字典,插件 dists 可以将其埋在他们喜欢的任何 Python 路径中(包括在命名空间包中的包内)。然后系统简单地寻找那些入口点并获取字典。