Python 中是否有等同于 NPM 的 "peerDependencies" 的东西(最好是在 setuptools 中)?

Is there an equivalent to NPM's "peerDependencies" in Python (preferably in setuptools)?

我正在寻找一种方式来表达类似于 setuptools 中 NPM 的 peerDependencies 的内容。

我的 Python 库是一个插件,可以与我不想作为依赖项的另一个 Python 库一起使用。相反,我希望我的最终用户对其负责并自行安装。我无法在 Python 的 setuptools(或与此相关的任何其他构建)中找到合适的方式来表达这一点,让我的用户“了解”图书馆

根据我目前的理解,这是工具之间的近似值:

NPM setuptools
dependencies install_requires
optionalDependencies extras_require
peerDependencies ???

我有两个可能的解决方案,但我发现这两个都欠缺:

  1. 无论如何使用extras_require

    extras_require 下指定我的要求即可完成工作,但感觉就像在滥用它,因为用户不应该安装这些附加功能。

  2. 记录一下

    通知用户他们需要单独安装该软件包。也觉得很蹩脚

据我了解,没有必要这样做,因为 Python 处理依赖关系的方式不同。

使用 npm/node,如果 sub-dependencies (How does NPM handle version conflicts?)

之一需要,您可以在同一环境中拥有一个包的多个版本

这在 Python 中是不可能的。在一个环境中只能安装一个库的一个版本。这意味着您正在尝试 solve with peer-dependencies 的一般性问题不会发生。

我的建议是像往常一样指定您的依赖项,但使用松散的版本说明符。