提问者:小点点

pipenv:当我安装软件包时自动创建锁文件时,为什么要运行pipenv lock


皮皮诺夫:

我在https://realpython.com/pipenv-guide/发现要把项目转移到开发我必须运行

pipenv lock 

(更新/创建Pipfile.lock文件)

根据我的理解,每当我们使用

pipenv install django

皮普尔。锁是自动生成/更新的。

所以需要做什么

pipenv lock

这不是文件。始终锁定已更新的文件。

当然,如果我想在任何时候创建. lock文件(如果它被删除,我可能会做pipenv lock

此外,如果碰巧删除了PIP文件,我可以重新创建它。


共3个答案

匿名用户

你说得对,pip文件。安装虚拟环境或某些软件包时已创建锁。据我所知,目标是在进入生产之前更新所有依赖项。

但是我认为,根据文档,您不应该更新pip文件。锁定在此阶段,除非您对CI管道和测试框架非常自信,因为它可能会在生产中部署一些未经测试的依赖项版本请记住,pipenv锁定不会在您的开发机器上安装更新依赖项,如果您在没有pipenv sync的情况下重新运行测试,则不会测试更新的依赖项。我更喜欢在早期阶段一次性锁定所有依赖项,然后将其保留到部署,然后在部署后更新依赖项并开始下一个版本。

这也是为什么我非常小心的pip安装

匿名用户

让我更清楚地解释一下,如果你正在做一个项目,你正在使用熊猫版本2.9.5,这是管道文件中熊猫的最新版本——你会看到条目

熊猫="*"

这里的*表示熊猫的最新版本,但在PIP文件中。锁它将不由*表示,但它将是一个确定性2.9。5(pipfile.lock是确定性文件)

今天2.9.5是最新版本,但明天我们可能会得到2.10,这可能与您的项目不兼容。

您不能将管道文件从测试环境移动到生产环境-您总是移动管道文件。锁定到正式生产环境,这将确保版本锁定在特定提到的版本,而不是*(最新版本)。我希望我说清楚了。

匿名用户

它确保在开始/继续安装之前定义依赖项-

从…起https://pipenv.readthedocs.io/en/latest/basics/#pipenv-锁

$pipenv lock用于创建PIP文件。lock,它声明项目的所有依赖项(和子依赖项)、它们的最新可用版本以及下载文件的当前哈希值。这确保了可重复的、最重要的是确定性的构建。