首页 > 解决方案 > 入口点子组的 Python 包发现

问题描述

我一直在练习打包 python 库,setuptools并且我知道entry_point关键字的使用以及使用包元数据收集给定组的 entry_points

我的问题是,pkg_resources,importlibpkgutil任何其他已知软件包是否提供了一种发现给定入口点组的子组的方法?我的意思是,找到所有以某个前缀开头的组:

>>> import pkg
>>> pkg.find_subgroups('entry.point.group')
entry.point.group.first
entry.point.group.other
entry.point.group.one.more

标签: pythonpython-3.xpackagesetuptoolsdistutils

解决方案


entry_points我认为您正在从importlib.metadata包装中寻找方法。该importlib.metadata包是在 python 3.8 中引入的。对于较低版本的 python,您可以安装 backported 包importlib_metadata

import sys
if sys.version_info < (3, 8):
    from importlib_metadata import entry_points
else:
    from importlib.metadata import entry_points

discovered_plugins = entry_points()
grps = set(for grp,eps in discovered_plugins.items())
for grp in grps: 
    if grp.startswith('entry.point.group'):
        print(grp)

推荐阅读