当前 workflow:
- 开发 /测试的 dependency 在 poetry.lock 里,poetry install 安装
- 测试通过后用 poetry build & poetry publish 发布
- 生产环境 docker image 里 pip install 上一步的 package
问题:开发环境的 dependency 在 poetry.lock 里,发布 package 的 dependency 在 pyproject.toml 的 tool.poetry.dependencies 里。有可能不同步。
我能想到的解决方法:
- 手动同步 pyproject.toml 和 poetry.lock 。不过这样一来似乎也没什么必要用 poetry.lock 了。根据 poetry 的文档如果没有 poetry.lock 的话 poetry install 会读取 pyproject.toml 里的 dependency,那干脆开发和生产都用 pyproject.toml 。
- docker 里 git checkout 出 poetry.lock,安装 dependency 然后再安装发布包。不过这样一来需要在 image 里装没什么用的 git,并且如果是 private repo 的话可能要添加一些设置。
python 半小白,感觉应该是比较常见的问题但是搜了一圈没看到人怎么说。请不吝赐教。
查看更多