创建 Python 包中定义的 console_scripts 列表

Kau*_*ose 7 python setuptools

我正在使用 setup_tools 和 setup.py 来分发工具包。用户看到的包的表面是使用 console_scripts 入口点安装的命令行脚本的集合。

我想要一个额外的脚本,用户可以执行该脚本来查看包已安装的 console_scripts 列表。

有没有原则性的方法来做到这一点?一种简单的方法是从 setup.py 中的“console_scripts”条目复制列表,但这很容易出错,因为修改包时必须更新列表。

我当前的解决方案是实际读取 setup.py 脚本并解析 console_scripts 条目。这看起来不像Pythonic。

因此我的问题是是否有一个原则性的方法可以做到这一点。谢谢!

Dam*_*ers 3

这可以使用pkg_resources模块setuptools并过滤您感兴趣的包。

import pkg_resources
def find_my_console_scripts(package_name):
    entrypoints = (ep for ep in pkg_resources.iter_entry_points('console_scripts')
                   if ep.module_name.startswith(package_name))
    return entrypoints
Run Code Online (Sandbox Code Playgroud)

返回的EntryPoint具有 中定义的所有内容的属性,setup.py例如 name, module_name,attrs.