【问题标题】:What if two python packages have different versions of package dependencies?如果两个 python 包有不同版本的包依赖怎么办?
【发布时间】:2022-01-24 12:01:24
【问题描述】:

我对 python 依赖项感到困惑。

  • A包中使用C包版本1.0
  • B包中使用C包2.0版

在以下情况下,C 将安装 2 个不同的版本?还是 AB 都使用 C 版本 2.0

【问题讨论】:

  • 只会安装一个版本。最新的。但是包 A 可能无法与新版本的 C 一起运行。
  • 首先要检查的是 2.0 版本是否向后兼容 1.0,因为如果是,您只需要 2.0(对于大多数软件包,如果不是,大多数功能都是这种情况全部。如果不是,并且您绝对需要使用的软件包依赖于软件包的不同且不兼容的版本,并且没有可以使用相同版本的 C 的 A 和 B 版本,我看到的选项要么独立运行 A 和 B 并连接应用程序,要么采用旧版本的 C 并重建并将其作为不同名称的包导入(如果许可证允许)
  • (当然,假设您可以更改 A 以使用重命名的版本)

标签: python package dependency-management


【解决方案1】:

这个问题取决于您使用的包管理器以及它如何解决依赖冲突。如果您使用的是标准包管理器 (pip),那么它应该让您知道是否发生此类错误。 pip 的工作方式是通过一个称为"backtracking" 的过程,它基本上从最新版本“向后”工作,以查找软件包兼容的最新版本。如果两个包要求另一个包的冲突版本,您会得到所谓的ResolutionImpossible error,这将取消安装过程。这通常只能通过强制pip 选择特定版本或更新您尝试安装的软件包的requirements.txt 文件来解决。 conda 以类似的方式工作,但它通常会求助于安装最新版本,然后警告您,而不是 pip 抛出的错误。

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2020-02-07
    • 2023-03-25
    • 2012-02-11
    相关资源
    最近更新 更多