跳过正文
  1. Posts/

关于 Python pip install 与版本管理

·718 字·2 分钟· ·
沈显鹏
作者
沈显鹏
DevOps & Build 工程师 | Python 爱好者 | 开源贡献者
目录

背景
#

如果你计划将 Python 项目发布到 PyPI,就需要了解 PyPI 与 pip 的版本安装规则。
我做了一些关于 pip install 的测试,来观察不同版本号和 --upgrade 参数下的安装行为。

假设我的项目叫 demo-pip

  • Beta 版本号示例:1.1.0.xxxx
  • 正式版本号示例:1.1.0

目标是确认在不同情况下是否能成功升级。


总结
#

  1. 安装 PyPI 上的指定版本(无论是否加 --upgrade)都会成功。
  2. 当 PyPI 上的版本高于本地版本时,只有加 --upgrade 才会成功升级;不加则失败。
  3. 当 PyPI 上的版本低于本地版本时,无论是否加 --upgrade,都会失败。
  4. 使用 1.1.0.xxxx 作为 beta 版本号在 pip 中是合法的,但如果 beta 版本号大于正式版本(例如 1.1.0.1000),在发布正式版本 1.1.0 后,--upgrade 将无法降级安装。
    • 方案 A:正式版本从 1.1.0.1000 开始,beta 版本从 1.1.0.0001 递增。
    • 方案 B(推荐):遵循 PEP 440 官方版本规范,beta 版本命名为 1.1b1, 1.1b2 …(测试结果正常工作)。
  5. 按 PEP 440 命名的 beta 版本(如 1.0b1)被视为小于正式版本,因此升级逻辑正常。

测试案例
#

No.测试步骤结果结论
1安装本地 1.0.5 → PyPI 最新是 1.0.4pip install --upgrade已是最新,无法降级低版本无法覆盖高版本
2安装本地 1.0.3pip install --upgrade(PyPI: 1.0.4升级成功高版本可覆盖低版本(需 --upgrade
3安装本地 beta 1.0.3.1000pip install / --upgrade--upgrade 不升级,有则升级大版本比较逻辑生效
4安装本地 beta 1.0.4.1000pip install 1.0.4降级失败(版本比较更大)beta 高于正式版时降级失败
5安装本地 beta 1.0b1pip install --upgrade(PyPI: 1.0.4升级成功PEP 440 命名可正常比较版本

建议
#

  • 优先遵循 PEP 440:这样可以保证 pip 对 beta、rc、final 等版本的比较符合预期。
  • 在 CI/CD 中明确使用 --upgrade 逻辑,避免不必要的安装失败。
  • 对 beta 与正式版本的发布顺序做好规划,避免版本号反转导致的降级问题。

相关文章