【问题标题】:How to tell package manager (pip) to never replace newer with older version如何告诉包管理器(pip)永远不要用旧版本替换新版本
【发布时间】:2021-02-25 06:51:55
【问题描述】:

有没有办法告诉包管理器pip 在从requirements.txt 安装包时永远不要用旧版本替换新版本?

示例: 我安装了 Robot Framework 3.2.2Waitress 1.4.3,我的 requirements.txt 看起来像这样:

...
robotframework==3.0.2
waitress==1.4.4
...

因此,我只希望刷新女服务员的要求。 原因是我需要通过需求文件自动安装依赖,不能只更改它们的内容。

【问题讨论】:

  • “我不能只改变他们的内容”没有多大意义,即在requirements.txt 描述的情况下已经过时了。如果在已安装的版本和requirements.txt 中列出的版本之间有新的或折旧的功能怎么办。
  • requirements.txt 声明较旧版本时,为什么您的环境中安装了较新版本?这可能会导致不兼容问题。 requirements.txt 文件用于指定应使用的确切(或范围)版本。
  • @YevhenKuzmovych 这是一个我可以远程执行python软件的工具。我无法解释确切的用例。在上传时,它会扫描上传的软件(很可能是一个包含项目文件夹的 zip 文件)以查找 requirements.txt。如果找到,则安装依赖项。我不希望要求文件首先卸载我的工具所需的依赖项。可能我需要在安装之前扫描需求文件并手动评估所有依赖项。
  • @buran 在拥有过时的需求文件时默默地降级软件包仍然是一种不好的行为,不是吗?正确的行为是询问用户:WARNING: You have already a newer version of module xyz installed. Would you like to continue? This may break your python environment! (y|n),除此之外,当需求文件包含旧版本时,用户应该能够将默认行为设置为 failure
  • requirements.txt 的想法是反复重建一个完整的特定环境,例如用于开发,当多个贡献者等时。如果您的 requirements.txt 不能反映您的实际环境,则它违背了它的目的。我建议你阅读stackoverflow.com/questions/43658870/…packaging.python.org/discussions/…

标签: python pip requirements.txt


【解决方案1】:

您可以使用>= 告诉 pip 安装较新的版本或那个版本。

例如:

robotframework>=3.0.2
waitress>=1.4.4

会告诉 pip 安装至少 3.0.2 的 robotsframework 版本和至少 1.4.4 的女服务员版本。

【讨论】:

    猜你喜欢
    • 2014-07-11
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    相关资源
    最近更新 更多