Arch Linux下pip安装python-telegram-bot版本不一致报错
问题原因
你当前使用的pip 21.0版本存在已知的版本校验逻辑bug:当解析文件名带下划线、包名带横杠的Python包(比如python-telegram-bot对应的wheel文件名为python_telegram_bot-xxx.whl)时,会错误触发版本不一致判定,哪怕文件名和元数据里的版本号完全相同,也会直接丢弃安装包、回退到更低版本尝试,最终所有版本都会被判定为无效导致安装失败。
你贴的报错日志里明确写了两边版本号完全一致(比如filename has '13.12', but metadata has '13.12'),就是这个bug的典型表现,和python-telegram-bot包本身、你的Python版本都没有关系。Arch官方源里预置的pip版本停留在21.0刚好踩中这个问题。
修复方案
按优先级从高到低选以下任意一种方法即可:
- 升级pip版本,从根源解决bug。Arch环境下优先先同步系统源的pip包:
如果同步完系统源的pip版本还是低于21.2(这个版本修复了前述校验bug),就给当前用户单独安装最新版pip,不会修改系统目录的文件、也不会和pacman的包管理冲突:sudo pacman -Syu python-pip
升级完成后重新执行安装命令即可正常安装:python -m pip install --upgrade pip --userpip install python-telegram-bot - 临时绕过校验,不想升级pip的话可以加参数跳过版本检查逻辑直接安装:
这个方法只是临时绕过问题,后续安装其他同类命名格式的包还是可能触发相同报错,长期使用建议还是升级pip。pip install python-telegram-bot --no-cache-dir - 最佳实践补充:Arch系统下不建议直接往全局系统Python环境里装第三方包,很容易和pacman维护的系统Python依赖产生冲突。日常写项目最好先用
python -m venv 项目虚拟环境目录创建独立虚拟环境,激活虚拟环境之后再装依赖,能避开绝大多数Python包管理问题。
内容的提问来源于stack exchange,提问作者Bourbon
相关产品推荐
相关产品推荐

