【发布时间】:2021-02-25 06:51:55
【问题描述】:
有没有办法告诉包管理器pip 在从requirements.txt 安装包时永远不要用旧版本替换新版本?
示例:
我安装了 Robot Framework 3.2.2 和 Waitress 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