为什么不应该将版本号固定在 Pipfile 中?

新手上路,请多包涵

我正在研究使用 pipenv 和这里的文档

https://pipenv.pypa.io/en/latest/basics/#importing-from-requirements-txt

它说(强调我的)

请注意,在导入需求文件时,它们通常会固定版本号,您可能 不希望这样

为什么是这样?

我知道 Pipfile.lock 文件将存储我安装的依赖项的特定版本和哈希值,但我不想看到 Pipfile 中安装的特定版本吗? (就像我使用 requirements.txt 一样?)

原文由 w– 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

文档对您将版本固定在需求文件中的可能原因颇有意见:它可能来自 pip freeze > requirements.txt

当然,您需要在 Pipfile 中指定部分或全部版本范围,只是很多人将它们固定在 requirements.txt 中,因为他们过去常常将其视为一种 Pipfile.lock ,指定甚至不是直接依赖项的软件包版本。当然,如果您没有遵循这种做法,则不必担心该警告。

这很可能是 Kenneth Reitz(Pipenv 的创建者)自己之前这样做的结果,正如他的博客文章 A Better Pip Workflow 中提到的那样。他已经在官方 资料库 中询问并回答了对此事的澄清。

2018 年 6 月更新

该消息过去也被 pipenv 命令打印为警告,但已被替换为

requirements.txt found, instead of Pipfile! Converting…
Warning: Your Pipfile now contains pinned versions, if your requirements.txt did.
We recommend updating your Pipfile to specify the "*" version, instead.

更友好一点,但我认为它仍然含蓄地说在 Pipfile 上固定版本并不理想,这是不正确的。完全没问题。

原文由 villasv 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不确定以前是什么情况,但是, 最新的文档 说您可以在安装包时指定包的版本号,如下所示:

 pipenv install requests==2.13.0

这还将更新您的包 Pipfile 以包含版本号,如下所示:

 requests = "==2.13.0"

您可以为每个要为其指定版本号的包执行此操作——包括如果您以前安装过它们。

我认为您可以手动编辑您的 Pipfile 来执行此操作,但我不确定这是否正确。

原文由 dspacejs 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题