setup.py: 入口点和 cmdclass 有什么区别?

setup.py: what is a difference between entry points and cmdclass?

在学习 setup.py 的结构时,我遇到了两个术语:entry_pointscmdclass

我阅读了setuptoolsdistutils的文档。借助它以及我在网上找到的一些信息,我得出的结论是这两者是一回事。具体来说:

这两个用于添加自定义命令,或者可以用来为现有命令添加钩子。

但是,当我检查一些流行软件包的 setup.py 文件时,我发现这两个属性被一起使用。例如请参阅 numpy 包的 setup.py

你能解释一下这两个属性的用途吗?

cmdclass 是一种修改非常 setup.py 行为的方法。例如,您可以覆盖 buildinstall 命令来扩展它们。

entry_points 类似于 scripts,它们声明将在安装时创建的脚本。这些脚本旨在 运行 由用户使用。