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
???
我有两个可能的解决方案,但我发现这两个都欠缺:
无论如何使用extras_require
在 extras_require
下指定我的要求即可完成工作,但感觉就像在滥用它,因为用户不应该安装这些附加功能。
记录一下
通知用户他们需要单独安装该软件包。也觉得很蹩脚
据我了解,没有必要这样做,因为 Python 处理依赖关系的方式不同。
使用 npm/node,如果 sub-dependencies (How does NPM handle version conflicts?)
之一需要,您可以在同一环境中拥有一个包的多个版本
这在 Python 中是不可能的。在一个环境中只能安装一个库的一个版本。这意味着您正在尝试 solve with peer-dependencies 的一般性问题不会发生。
我的建议是像往常一样指定您的依赖项,但使用松散的版本说明符。
我正在寻找一种方式来表达类似于 setuptools
中 NPM 的 peerDependencies
的内容。
我的 Python 库是一个插件,可以与我不想作为依赖项的另一个 Python 库一起使用。相反,我希望我的最终用户对其负责并自行安装。我无法在 Python 的 setuptools
(或与此相关的任何其他构建)中找到合适的方式来表达这一点,让我的用户“了解”图书馆
根据我目前的理解,这是工具之间的近似值:
NPM | setuptools |
---|---|
dependencies |
install_requires |
optionalDependencies |
extras_require |
peerDependencies |
??? |
我有两个可能的解决方案,但我发现这两个都欠缺:
无论如何使用
extras_require
在
extras_require
下指定我的要求即可完成工作,但感觉就像在滥用它,因为用户不应该安装这些附加功能。记录一下
通知用户他们需要单独安装该软件包。也觉得很蹩脚
据我了解,没有必要这样做,因为 Python 处理依赖关系的方式不同。
使用 npm/node,如果 sub-dependencies (How does NPM handle version conflicts?)
之一需要,您可以在同一环境中拥有一个包的多个版本这在 Python 中是不可能的。在一个环境中只能安装一个库的一个版本。这意味着您正在尝试 solve with peer-dependencies 的一般性问题不会发生。
我的建议是像往常一样指定您的依赖项,但使用松散的版本说明符。