管道:
我在https://realpython.com/pipenv-guide/发现要将项目转移到开发我必须运行
pipenv lock
Run Code Online (Sandbox Code Playgroud)
(更新/创建 Pipfile.lock 文件)
根据我的理解,每当我们使用
pipenv install django
Run Code Online (Sandbox Code Playgroud)
Pipfile.lock 是自动生成/更新的。
那么需要做什么
pipenv lock
Run Code Online (Sandbox Code Playgroud)
不是 Pipfile.lock 总是更新的。
当然,如果我想随时创建 .lock 文件(如果删除的话)我可以这样做 pipenv lock
此外,如果 pipfile 被删除,我可以重新创建它。
小智 6
让我更清楚地解释一下,假设您正在开发一个使用 pandas 版本 2.9.5 的项目,这是 pipfile 中 pandas 的最新版本 - 您将看到条目
熊猫=“*”
这里 * 表示 pandas 的最新版本,但在 pipfile.lock 中它不会用 * 表示,但它将是确定性的 2.9.5 (pipfile.lock 是确定性文件)
今天 2.9.5 是最新版本,但明天我们可能会得到 2.10,它可能与您的项目不兼容。
您不会将 pipfile 从测试环境移动到生产环境 - 您始终将 pipfile.LOCK 移动到生产环境,这可确保版本锁定在特定提到的版本而不是 * (最新版本)。我希望我说清楚了。
小智 5
你是对的,Pipfile.lock在安装虚拟环境或某些软件包时已经创建了。据我了解,目标是在进入生产之前更新所有依赖项。
但我认为根据文档,您不应该在这个阶段更新Pipfile.lock,除非您对 CI 管道和测试框架非常有信心,因为它可能会在生产中部署一些未经测试的依赖项版本请记住,它pipenv lock不会安装在您的开发计算机上更新依赖项,如果您重新运行测试,pipenv sync则不会测试更新的依赖项。我更喜欢在早期阶段锁定所有依赖项,然后保留它直到部署,然后在部署后更新依赖项并开始下一个版本。
这也是我对 非常小心的原因pip install <package>,因为它还会自动更新所有依赖项,而我更喜欢pipenv尝试保持所有其他依赖项版本不变,除非特别指定或依赖项版本之间发生冲突。
Mah*_*ath -1
它确保在开始/继续安装之前定义依赖项 -
来自 https://pipenv.readthedocs.io/en/latest/basics/#pipenv-lock
$ pipelinenv lock 用于创建 Pipfile.lock,它声明项目的所有依赖项(和子依赖项)、它们的最新可用版本以及下载文件的当前哈希值。这确保了可重复的、最重要的是确定性的构建。