use*_*363 10 python git python-poetry
我正在为我的 Python 包管理器使用诗歌,但我相信这适用于任何编程实践。
我一直在这样做,但不知道我在做什么,或者我应该怎么做。
当您使用包管理器并安装新包时,通常会.lock更改文件以保持构建的确定性。
通常,我会提交这些更改,例如:
$ git add poetry.lock pyproject.toml
$ git commit -m "Install packages: beautifulsoup4"
Run Code Online (Sandbox Code Playgroud)
即,我每次安装/删除软件包时都会提交一次。我这样做是因为我觉得这是我应该做的,但我有 0 个线索,如果这实际上是处理这个问题的正确方法。
我做得很好吗?或者是否有任何其他特定的约定和规则我应该遵守以使其尽可能接近最佳实践?
fin*_*mer 16
到目前为止,所有给出的答案都忽略了 Poetry 的锁定文件和其他工具之间的一个重要区别,例如pip freeze:Poetry 的锁定文件是一个通用锁定文件。
这意味着 Poetry 不关心当前环境,既不关心正在使用的 Python 版本,也不关心平台。相反,它确保依赖关系在pyproject.toml. 这会生成一个在任何平台上都有效的锁定文件,其 Python 版本在pyproject.toml.
与其他生成锁定文件的工具的区别也是 Poetry 在解决依赖关系方面速度较慢的原因。这也是为什么建议在poetry.lock您的 vcs 中检查的原因。这样做可以加快开发环境的设置速度,并确保您的环境是可重现的。
Ruu*_*men 10
事实上,诗歌在他们的网站上有一个关于此的部分:https ://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
他们认为实际提交此文件很重要,因为这将显示提交时使用了所包含的库的哪些版本。
将此文件提交到 VC 很重要,因为它将导致设置项目的任何人使用与您正在使用的依赖项完全相同的版本。您的 CI 服务器、生产机器、团队中的其他开发人员、所有事物和每个人都运行在相同的依赖项上,这减少了仅影响部署的某些部分的错误的可能性。即使您单独开发,在六个月内重新安装项目时,您也可以确信安装的依赖项仍然有效,即使您的依赖项从那时起发布了许多新版本。(请参阅下面有关使用更新命令的注释。)
对于库,不需要提交锁定文件。
诗歌维护者的官方建议是,如果您开发可部署的应用程序(而不是库),则提交锁定文件。
话虽如此,我个人的经验是没有必要将锁文件提交到 VCS。该pyproject.toml文件是正确构建指令的参考,而锁定文件是单个成功部署的参考。现在,我不知道规范poetry.lock是什么,但是在与同事合作的过程中,我经常让它们适得其反,而只有删除它们才能解决问题。
一个常见的问题是,使用不同的操作系统或 python 版本会导致不同的锁文件,这就是行不通的。我很乐意让我们的 CI 构建并保留一个权威的引用锁定文件以启用重新构建,但它仍然不会提交到存储库。
如果根据您的工作流程维护共享锁文件是可行的 - 太棒了!您避免了管道中的一个步骤,少了一个需要担心的工件,并大大减少了构建时间(即使是中等规模的项目也可能需要几分钟才能完成完整的依赖项解析)。
但据最佳实践走了,我会考虑加入poetry.lock到.gitignore一个更好的做法比你做什么,只承诺pyproject.toml在您添加依赖关系的变化。
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |