如何将Polars的abi3标签wheel包转换为cp39标签?
别着急,我之前也碰到过类似的问题——单纯解压后改个文件名或者随便改点标签内容确实没用,得按正确的步骤来操作,下面是亲测有效的方法:
第一步:解压目标wheel包
先把你手里的abi3版本Polars wheel包解压到一个临时目录,比如用下面的命令:unzip polars-*.whl -d polars_cp39_temp这里的
polars-*.whl替换成你实际的wheel文件名就行。第二步:修改关键标签文件
进入解压后的目录,找到polars-*.dist-info文件夹(文件名里带版本号),打开里面的WHEEL文件:- 找到类似
Tag: cp39-abi3-manylinux_2_17_x86_64的行,把abi3替换成cp39,改成Tag: cp39-cp39-manylinux_2_17_x86_64(后面的系统架构部分根据你的包实际内容来,不用改) - 确保文件里所有相关的Tag行都改对,有的包可能会列多个Tag,都要对应替换
- 找到类似
第三步:重命名wheel包文件名(打包前先准备好)
把原来的abi3版本文件名,比如polars-0.20.12-cp39-abi3-manylinux_2_17_x86_64.whl,改成cp39版本的格式:polars-0.20.12-cp39-cp39-manylinux_2_17_x86_64.whl,记住这个新名字,后面打包会用到或者直接重命名最终产物。第四步:重新打包成wheel文件
确保你已经安装了wheel工具(没装的话先跑pip install wheel),然后执行打包命令:wheel pack polars_cp39_temp打包完成后会生成新的wheel文件,你可以把它重命名成刚才准备好的cp39格式文件名。
另外补充个小提示:其实abi3标签的wheel包本来就是兼容对应Python版本(比如cp39)的,如果你只是想在cp39环境里安装,试试直接用pip install --force-reinstall --no-deps polars-*.whl强制安装,说不定不用改标签也能解决问题~
备注:内容来源于stack exchange,提问作者RGI

