问题描述
我有一个 python 包,其中的依赖项在一个用于开发和测试的诗歌.lock 文件中指定。然后我构建并发布安装在生产 docker 镜像上的包。但问题在于:已发布的包在 pyproject.toml 的 tool.poetry.dependencies 部分中指定了其依赖项,这可能与诗歌.lock 不同。因此,生产环境最终可能具有与测试环境不同的依赖项。
我可以想到几种方法来实现一致性,但对我来说似乎没有一种方法是好的:
-
在 pyproject.toml 中使用与在诗歌.lock 中相同的设置版本。这将保证发布的包与 dev/test 具有相同的依赖项。但是此时保留一个诗歌.lock 文件还有什么意义,因为如果没有诗歌.lock 文件,pyproject.toml 也可以用于
poetry install
。我认为这行得通,但后来我不明白为什么一开始还要有诗歌锁。 -
在生产 docker 镜像中,在安装包本身之前,从包 repo 中检出诗歌.lock 文件并运行
poetry install
。但这会增加 docker 镜像的大小,如果 repo 是私有的,则会引入不必要的配置,并且整体看起来不自然。
我对 Python 的这一部分很陌生,所以其中之一可能是“标准”工作流程。或者也许我只是完全错过了一些东西。谢谢回答!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)