如何使用诗歌和 pyproject.toml 使 python 包的开发环境和生产环境之间的依赖关系保持一致

问题描述

我有一个 python 包,其中的依赖项在一个用于开发和测试的诗歌.lock 文件中指定。然后我构建并发布安装在生产 docker 镜像上的包。但问题在于:已发布的包在 pyproject.toml 的 tool.poetry.dependencies 部分中指定了其依赖项,这可能与诗歌.lock 不同。因此,生产环境最终可能具有与测试环境不同的依赖项。

我可以想到几种方法来实现一致性,但对我来说似乎没有一种方法是好的:

  1. 在 pyproject.toml 中使用与在诗歌.lock 中相同的设置版本。这将保证发布的包与 dev/test 具有相同的依赖项。但是此时保留一个诗歌.lock 文件还有什么意义,因为如果没有诗歌.lock 文件,pyproject.toml 也可以用于 poetry install。我认为这行得通,但后来我不明白为什么一开始还要有诗歌锁。

  2. 在生产 docker 镜像中,在安装包本身之前,从包 repo 中检出诗歌.lock 文件并运行 poetry install。但这会增加 docker 镜像的大小,如果 repo 是私有的,则会引入不必要的配置,并且整体看起来不自然。

我对 Python 的这一部分很陌生,所以其中之一可能是“标准”工作流程。或者也许我只是完全错过了一些东西。谢谢回答!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)