条件设置工具入口点

Tor*_*kel 5 python setuptools entry-point

是否可以在 setup.py 中定义条件入口点?我注意到可以使用 来标记入口点extras,但即使安装的包没有该额外功能,该入口点也将可用。

setup(name='my.package',
      ...
      extras_require={
          'special': [
              'dependency1',
              'dependency2',
          ],
      },
      ...
      entry_points="""
      [custom_entrypoint]
      handlername = my.package.special:feature [special]
      """,
  )
Run Code Online (Sandbox Code Playgroud)

custom_entrypoint即使安装的软件包没有该功能,该功能也可用( special) pip install my.package[special]。有没有一种简单的方法可以让这样的事情发挥作用?

Ant*_*ala 1

入口点被写入package.dist-info/entry_points.txt。我建议查看系统上安装了哪些软件包setup.py,但这可能没有帮助,因为dist-info可能会在安装其他软件包之前处理这些软件包pip;后来,即使您安装了其他软件包,这些入口点也不会神奇地出现,除非您setup.py使用my.package正确的参数运行。

我建议您重构,以便有一个名为 的包和另一个名为;my.package的可安装包。my.package.special后者将具有my.packagedependency1dependency2作为依赖项以及入口点。现在,如果您想安装my.package它,无需特价即可安装;pip install my.package.special以获得最重要的特殊功能。

  • 创建整个 Python 包来满足“元依赖”需求是愚蠢的,而这正是“extras_require”的用途。 (2认同)