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

更新pip与setuptools==66.0后触发packaging.version.InvalidVersion错误

解决pip因distro-info版本号不兼容导致的崩溃问题

问题描述

更新pip并安装setuptools==66.0后,pip完全无法执行任何操作,抛出以下错误:

Traceback (most recent call last):
  File "/usr/bin/pip", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 3249, in <module>
    def _initialize_master_working_set():
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 3223, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 3261, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 619, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 632, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 1044, in __init__
    self.scan(search_path)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 1077, in scan
    self.add(dist)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 1096, in add
    dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 2631, in hashcmp
    self.parsed_version,
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 2685, in parsed_version
    raise packaging.version.InvalidVersion(f"{str(ex)} {info}") from None
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '0.23ubuntu1' (package: distro-info)

核心原因是setuptools==66.0启用了严格的PEP 440版本号校验,而系统自带的distro-info包使用了Ubuntu定制的版本号格式(0.23ubuntu1),不符合校验规则,导致pkg_resources初始化失败。

解决方案

方案1:重新安装系统版distro-info(推荐)

通过系统包管理器重新安装兼容的distro-info包,确保版本号被正确处理:

sudo apt install --reinstall python3-distro-info

方案2:降级setuptools到兼容版本

setuptools==65.7.0及更早版本对非标准版本号兼容性更好,直接用python内置工具降级:

sudo python3 -m easy_install setuptools==65.7.0

方案3:临时修改版本校验逻辑(应急用)

如果前两个方案无法执行,可临时修改pkg_resources的代码跳过严格校验:

  1. 打开/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py
  2. 找到parsed_version属性定义的位置(约2680-2685行),替换为以下代码:
@property
def parsed_version(self):
    if not hasattr(self, '_parsed_version'):
        try:
            self._parsed_version = packaging.version.Version(self.version)
        except packaging.version.InvalidVersion as ex:
            # 兼容非PEP440标准的版本号
            self._parsed_version = packaging.version.LegacyVersion(self.version)
    return self._parsed_version
  1. 保存文件后,pip即可临时恢复使用,后续建议尽快用方案1或2彻底修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:35:26