创建Python包中定义的console_scripts列表

时间:2016-02-08 17:34:03

标签: python setuptools

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

我希望有一个额外的脚本,用户可以执行该脚本以查看该软件包已安装的console_scripts列表。

这样做有原则吗?一种简单的方法是从' console_scripts'中复制列表。在setup.py中输入,但这很容易出错,因为在修改包时必须更新列表。

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

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

1 个答案:

答案 0 :(得分:0)

可以使用setuptools中的pkg_resources模块并过滤您感兴趣的套餐。

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

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