【问题标题】:Python pip installer not controlling versions of packagesPython pip 安装程序不控制包的版本
【发布时间】:2021-07-07 20:27:00
【问题描述】:

我遇到了关于 pip (Python 2.7.14) 的版本控制问题。我将 pip 更新到版本 20.3.3。然后安装python包。我为每个包指定了版本。安装 sympy 1.3 版时出现问题(命令行代码如下所示):

C:\Python27\python.exe C:\Python27\Scripts\pip.exe install --no-cache-dir sympy==1.3

sympy 安装 0.19 版 mpmath 作为依赖项。 pip 继续说它正在下载 mpmath 0.19 版,但随后尝试安装 1.2.1 版。 pip 然后返回一个错误,指出安装失败。可以通过首先直接安装 mpmath 版本 0.19,然后继续安装 sympy 版本 1.3 来解决此问题。由于已经满足 mpmath 依赖,sympy 会跳过尝试下载和安装 mpmath。 sympy 就可以安装成功了。

当 pip 从其他包安装依赖项时,有没有办法控制依赖项的版本?我希望能够控制所有版本,以确保我的软件随着时间的推移产生相同的结果。

【问题讨论】:

  • “当 pip 从其他包安装依赖项时,有没有办法控制依赖项的版本?” 请参阅包可能具有的可选 requirements.txt 文件。不知道可靠的方法(除非您要破解目标包的requirements.txt)。如果我要手动保证安装了特定版本的依赖包,我该怎么办:pip install mypath==0.19
  • 这几乎肯定是重复的,请参阅pip requirements.txt version dependency上的相关问题
  • 感谢您输入 smci。我担心的是,通过指定必要软件包的版本,我的安装程序包已经运行了好几年了。 mpmath 是 sympy 的依赖项(mpmath 不是直接导入到我的软件中,而 sympy 是直接导入的)。但是现在,出乎意料的是,当重新安装软件时,由于 pip 无法控制(看似)sympy 的依赖项(mpmath)版本的问题,sympy 无法安装。我希望避免将来在其他人使用该软件时出现类似的问题。

标签: python pip


【解决方案1】:

建议你试试pip-tools:https://github.com/jazzband/pip-tools

您所要做的就是编写一个requirements.in 文件,您可以在其中固定第一级依赖项(在您的情况下为sympy)。

然后运行pip-compile requirements.in:将自动生成一个requirements.txt,同时固定所有依赖项。

【讨论】:

  • 经过仔细检查,sympy 1.3 的 mpmath 依赖项定义为 mpmath >= 0.19。所以我认为这个解决方案会导致同样的问题——问题似乎与 sympy 的依赖规范(>= 而不是 ==)有关。似乎这个问题不是可以通过程序解决的,而是需要在个人基础上解决。不过感谢您的解决方案。
猜你喜欢
  • 2021-03-24
  • 1970-01-01
  • 2014-08-09
  • 2022-06-15
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
相关资源
最近更新 更多