我正在建立一个接受插件的系统,使用setuptools' entry_points功能来查找插件。因此,插件由分发提供,但单个分发可能提供多个插件。
我想要一些方法来编码有关提供一个或多个插件的每个发行版的元数据。简单的东西,比如提交错误的URL,但比内置的setup
参数允许的更多。作为一个额外的皱纹,插件使用命名空间包,因此每个发行版没有唯一的顶级包。
我已经尝试了using a setuptools extension via egg_info.writers
,但这暴露了一个setuptools错误,无论如何都有一些鸡与蛋的问题。我还尝试过putting the metadata in setup.cfg
并通过pkg_resources.resource_stream
阅读,但很快意识到安装软件包后setup.cfg
就会消失。
我可能会想到一些更深奥或非功能性的想法,但我希望有一些我可以遵循的最佳实践(甚至是#34;最糟糕的练习和#34;)
答案 0 :(得分:0)
最稳定,最可靠的setuptools部分似乎是entry_points。
我采用的解决方案涉及使用一个额外的入口点组来定位字典,插件dists可以埋在他们喜欢的任何Python路径中(包括在命名空间包中的包中)。然后系统只是查找那些入口点并抓取字典。