如何将 Python 模块打包成默认的 extras?

Dur*_*ndA 8 python packaging pip setuptools pypi

我的 Python 包有可选功能 ( extras_require),我希望默认选择它们。

更具体地说,我希望其pip install mypackage行为类似于pip install mypackage[extra]并且我可以安装带有类似pip install mypackage[core].

setup(
    name="mypackage",
    ...
    extras_require={
        "extra":  ["extra1>=1.2", "extra2"],
        "core": [],
    }
)
Run Code Online (Sandbox Code Playgroud)

是否可以通过类似于上面的设置脚本来实现此目的?

Dus*_*ram 5

不幸的是,这对于 Python 打包元数据和工具的当前状态来说是不可能的。

关于原因,请参阅此处的长篇讨论。

  • 仍然不可能,但在 PyCon US 2022 上进行了详细讨论:https://speakerdeck.com/uranusjr/lets-fix-extras-in-core-metadata-3-dot-0 (4认同)
  • 2年后有更新吗?可以使用“pyproject.toml”吗? (2认同)