为什么版本号不能固定在Pipfile中?

2024-05-11 10:11:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究使用pipenv和这里的文档
https://pipenv.readthedocs.io/en/latest/basics.html#importing-from-requirements-txt

上面写着(强调我的)

Note, that when importing a requirements file, they often have version numbers pinned, which you likely won’t want

这是为什么?

我知道Pipfile.lock文件将存储我安装的依赖项的特定版本和散列,但我不想看到Pipfile中安装的内容的特定版本吗?(与使用requirements.txt时的方式相同?)


Tags: from文档httpsio版本txthtmlpipenv
3条回答

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

当然,您需要在Pipfile中指定一些或所有版本范围,只是许多人将其固定在requirements.txt中,因为他们过去将其视为一种Pipfile.lock,指定的包版本甚至不是直接依赖的。当然,如果你不遵循这种做法,你就不必担心这个警告。

这很可能是Kenneth Reitz(Pipenv creator)自己在之前的博客文章中提到的那样做的结果。关于这件事的澄清,他已经在官方的repository中提出并作出了答复。

更新日期: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上固定版本并不理想,这不是真的。很好。

don't I want to be able to see the specific versions of what is installed in the Pipfile?

锁文件用于跟踪实际安装的内容,是生成确定性生成的关键。lock打算与Pipfile一起提交到项目中。还有一种观点认为,理想的工作流是使用“pipenv lock来编译对开发环境的依赖关系,并将编译后的Pipfile.lock部署到所有生产环境中,以实现可复制的生成。”

要在Pipfile中指定的某些版本。例如,Django的所有版本低于某个主要版本可能是一个好主意。

同时也要知道,到目前为止,pipenv仍在积极发展中,所以其中一些想法仍在制定中。可能会有一些变化。

但是,我不确定以前的情况是什么,the latest documentation说您可以在安装包时指定其版本号,如下所示:

pipenv install requests==2.13.0

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

requests = "==2.13.0"

如果以前安装过每个要指定版本号的包,则可以对每个包执行此操作。

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

相关问题 更多 >