在 python 包开发中,你完全可以在推进 `1.0.0.dev1` 等预发布版本的同时,继续发布 `0.8.5` 或 `0.9.0` 等稳定版本;pip 及主流工具(如 poetry、pipenv)默认忽略预发布版本,优先安装最新稳定版。

这是语义化版本(SemVer)与现代 Python 工具链协同工作的标准实践。核心原理在于:预发布版本(如 1.0.0.dev1、1.0.0a1、1.0.0rc2)在版本比较中被明确标记为“非稳定”,因此不会干扰稳定分支的迭代节奏。
例如,假设你的 PyPI 仓库中存在以下版本:
当用户执行 pip install mypackage 时,pip 默认启用 --pre 标志的反向行为——即 不包含 --pre 时,自动排除所有含 dev/a/b/rc 等标识的版本。因此,它将解析出最高稳定版本 0.9.0(若已发布),而非 1.0.0.dev1。
✅ 正确操作示例(setup.py 或 pyproject.toml 中):
# pyproject.toml [project] name = "mypackage" version = "0.8.5" # 发布稳定版时直接更新此处
# 发布 0.8.5(稳定) twine upload dist/mypackage-0.8.5-py3-none-any.whl # 同时,1.0.0.dev1 可独立发布(需显式指定 --pre) twine upload dist/mypackage-1.0.0.dev1-py3-none-any.whl
⚠️ 注意事项:
总结:并行维护多个稳定小版本(0.8.x → 0.9.x)与一个长期开发的大版本(1.0.0)不仅可行,更是提升项目可维护性与用户信任度的关键策略——它保障了现有用户持续获得安全修复与小幅增强,同时为新特性提供充分的灰度验证周期。