You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Poetry 1.7.1中不修改pyproject.toml添加时间戳版本后缀发布包

解决Poetry动态添加时间戳版本后缀并发布的问题

针对你使用Poetry 1.7.1需要动态给版本加时间戳、不修改pyproject.toml且每次发布唯一包的需求,以下是可行方案:

方案1:用Poetry 1.7+新增的--version参数直接指定版本

Poetry 1.7及以上版本支持在构建/发布时通过命令行直接指定版本,完全不用动pyproject.toml:

  • 先生成带时间戳的版本号(以Linux/macOS为例,Windows可调整时间戳生成命令):
    TIMESTAMP=$(date +%Y%m%d%H%M%S)
    TARGET_VERSION="1.2.3-$TIMESTAMP"
    
  • 直接指定版本构建:
    poetry build --version "$TARGET_VERSION"
    
  • 发布构建好的包(如果不想分开执行,也可以一步到位):
    # 一步完成构建+发布
    poetry publish --build --version "$TARGET_VERSION"
    
    分开执行的话,构建完成后直接执行poetry publish即可,因为构建出的包文件名已经包含指定的版本号,Poetry能正确识别。

方案2:通过环境变量临时覆盖版本

如果需要更灵活的方式,也可以用环境变量临时覆盖pyproject.toml中的版本:

TIMESTAMP=$(date +%Y%m%d%H%M%S)
export POETRY_VERSION_OVERRIDE="1.2.3-$TIMESTAMP"
poetry build
poetry publish

默认情况下Poetry允许通过这个环境变量覆盖版本,无需额外配置。

关于你之前的poetry version方法失效的原因

poetry version $version会直接修改pyproject.toml文件,而且如果修改后没有清理Poetry的缓存,或者没有重新生成锁文件,构建时可能还是用旧版本的缓存包,导致发布时检测不到新生成的带时间戳版本包。上面的两种方法都是在构建阶段动态注入版本,完全不修改原文件,也不会触发缓存问题。

验证

发布完成后去JFrog仓库查看,就能看到版本号为1.2.3-<当前时间戳>的包,每次构建的时间戳唯一,确保每个包都是独立的。

内容的提问来源于stack exchange,提问作者JV44

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:05:06