【问题标题】:Is there an equivalent to NPM's "peerDependencies" in Python (preferably in setuptools)?Python 中是否有与 NPM 的“peerDependencies”等效的东西(最好在 setuptools 中)?
【发布时间】:2022-03-21 19:51:47
【问题描述】:

我正在寻找一种方法来表达类似于 NPM 的 peerDependencies in setuptools 的东西。

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

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

NPM setuptools
dependencies install_requires
optionalDependencies extras_require
peerDependencies ???

我有两种可能的解决方案,但我觉得都缺乏:

  1. 还是使用extras_require

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

  2. 记录下来

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

【问题讨论】:

    标签: python dependencies setuptools peer-dependencies


    【解决方案1】:

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

    使用 npm/node,如果子依赖项之一 (How does NPM handle version conflicts?) 需要,您可以在同一环境中拥有一个包的多个版本

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

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

    【讨论】:

    • 好点!我对python的版本冲突解决没有足够的考虑。所以,基本上如果我的插件库需要外部库,最好松散地指定它。如果需要,该应用程序将声明其更具体的版本,他们会选择那个版本。结果还是一样的。
    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 2011-09-25
    • 2011-11-16
    • 1970-01-01
    • 2022-01-10
    • 2018-05-26
    相关资源
    最近更新 更多