pip>24.0安装prefect[kubernetes,azure]==1.4.0时依赖解析报错
pip 24.1+安装prefect[kubernetes,azure]==1.4.0失败:依赖解析语法错误
问题现象
安装prefect[kubernetes,azure]==1.4.0时,pip<=24.0版本可成功完成安装,但使用pip>24.0(如2024年7月发布的24.2版本)会触发依赖解析错误。执行以下命令:
# 虚拟环境内操作 pip install pip==24.2 pip install prefect[kubernetes,azure]==1.4.0
核心错误信息:
pip._vendor.packaging.requirements.InvalidRequirement: Expected matching RIGHT_PARENTHESIS for LEFT_PARENTHESIS, after version specifier kubernetes (>=9.0.0a1.0) ; extra == 'all_extras' ~~~~~~~~~~^
原因分析
pip 24.1及后续版本升级了底层的packaging依赖解析库,对PEP 508规范的校验变得更严格。而prefect 1.4.0的依赖声明中,kubernetes (>=9.0.0a1.0)的写法不符合规范——PEP 508中单个版本约束不需要包裹括号,旧版pip会容忍这种不规范写法,但新版pip的严格校验直接抛出错误。
解决方法
方案1:降级pip安装后再升级(推荐)
先将pip降级到24.0及以下版本完成prefect安装,之后可按需升级pip:
pip install pip==24.0 pip install prefect[kubernetes,azure]==1.4.0 # 安装完成后可升级pip至最新版本 pip install --upgrade pip
方案2:手动指定依赖并跳过自动依赖解析
手动安装kubernetes依赖,再用--no-deps参数安装prefect(注意此方法需要自行确认并安装其他必要依赖):
pip install kubernetes>=9.0.0a1.0 pip install prefect[kubernetes,azure]==1.4.0 --no-deps
方案3:升级prefect版本(业务允许时)
prefect后续发布的版本已修复该依赖声明问题,可尝试升级到1.4.x系列的补丁版本,或直接升级到2.x版本(注意2.x与1.x存在架构差异,需适配代码)。
内容的提问来源于stack exchange,提问作者Charalamm
相关产品推荐
相关产品推荐

