pip安装本地wheel提示"not a supported wheel on this platform"
起因是之前闲着没事,自己动手编译了PyTorch和TensorFlow,然后把生成的轮子(.whl)留了下来,打算在之后需要使用的时候自己安装。这里顺便吐槽一句,PyTorch官方的wheel包里自带了cudaRT和CUDNN,搞得安装包动不动上1G(自己编译的非自带版本仅200M+),而且服务器还不稳定,下着下着就自动断线了= =
然后经典安装本地轮子命令:
pip install torch-1.9.0a0+gitdfbd030-cp36-cp36m-win_amd64+cu101.whl
然后直接提示说不支持我装这个包。Python版本是对的,编译和安装wheel时用的也都是64位版本,网上那些Python版本都搞不对的低级错误我怎么可能犯,当时一度怀疑是pip出了问题。试图到网上找pip的verbose选项,结果发现对于pip install
指令并不支持这个功能,于是只好回到无头苍蝇状态,继续搜索有关轮子装不上的问题。
然后恰好看到这个提问,里面说pip会使用文件名来判断当前wheel是否支持目标平台。(使用pip debug --verbose
可以查看当前平台pip支持的所有目标平台标识符)
然后仔细一想,为了区分CPU和不同CUDA版本下编译出来的轮子,我在每个文件末尾添加了CUDA版本信息,如上面命令中的+cu101
,于是猜测是不是这个动作干扰了pip对轮子信息的判定。结果删了之后马上就好了= =
于是得出结论,不要轻易修改python wheel的文件名;如果一定要添加辅助信息的话,可以在版本号后面用加号+
链接添加所需要的信息,例如PytTorch自己编译时自动添加的git版本号。