python data_error ai_generated true

packaging.version.InvalidVersion:无效版本:'1.0.0-rc.1+build.5.6.7.8.9.10'

packaging.version.InvalidVersion: Invalid version: '1.0.0-rc.1+build.5.6.7.8.9.10'

ID: python/pip-version-parse-invalid-version

其他格式: JSON · Markdown 中文 · English
80%修复率
84%置信度
0证据数
2024-06-11首次发现

版本兼容性

版本状态引入弃用备注
3.9 active — — —
3.10 active — — —
3.11 active — — —
3.12 active — — —

根因分析

包版本字符串不符合 PEP 440。这通常发生在自定义构建或内置包上,其版本从包含无效字符的 git describe 或 CI 变量设置而来。

English

A package version string does not conform to PEP 440. This often happens with custom-built or vendored packages whose version was set from a git describe or CI variable containing invalid characters.

generic

解决方案

  1. 80% 成功率
    from packaging.version import Version, InvalidVersion
    
    def normalize(v):
        try:
            return str(Version(v))
        except InvalidVersion:
            return v.replace('-rc.', 'rc').replace('+', '.post')
    
    print(normalize('1.0.0-rc.1'))  # 1.0.0rc1
  2. 85% 成功率
    # in setup.py
    from setuptools import setup
    setup(name='mypkg', version='1.0.0rc1')  # not 1.0.0-rc.1

无效尝试

常见但无效的做法:

  1. 90% 失败

    Pre-release flag doesn't relax PEP 440 validation; the version string is still invalid.

  2. 85% 失败

    Ignoring installed packages doesn't change version parsing.