能否通过Poetry的include配置将.venv打包进tar.gz实现标准化部署?
问题:Poetry打包包含.venv的sdist包及标准化部署流程疑问
现状
我在pyproject.toml中配置了如下include规则,但执行poetry build时,.venv文件夹始终无法被纳入生成的tar.gz包中:
include = [ { path = ".venv", format = "sdist" }, { path = "docker", format = "sdist" }, { path = "env", format = "sdist" }, { path = "logging.conf", format = "sdist" }, { path = "poetry.lock", format = "sdist" }, { path = "poetry.toml", format = "sdist" }, ]
需求与环境
- 核心需求:在CI/CD流程中通过Poetry构建包含
.venv的tar包,将该包复制到Docker容器后,用poetry run start启动项目 - 运行环境:CI/CD节点与Kubernetes集群中的Docker容器均采用CentOS 7系统
目前常规做法是CI/CD构建完成后,手动将.venv、项目源码及相关配置文件复制到Docker容器中,但希望优化这个流程。
疑问点
- 能否通过将上述include配置写入
pyproject.toml,实现poetry build时自动将.venv打包进sdist包? - 借助Poetry提供的build和run脚本功能,是否可以实现一套标准化的打包与项目启动流程?
设想的标准化流程
CI/CD阶段
- 执行
poetry install安装项目依赖 - 执行
poetry build,将项目源码、配置文件及.venv打包为dist/app.tar.gz - 在Dockerfile中使用
ADD dist/app.tar.gz /app命令将包复制到容器内的/app目录
Docker容器启动阶段
- 执行
poetry run start启动项目
方案预期优势
- 标准化打包与部署流程,减少手动操作,降低出错概率
- 所有打包相关配置集中在
pyproject.toml,简化CI/CD的配置复杂度
内容的提问来源于stack exchange,提问作者zuo zeng
相关产品推荐
相关产品推荐

