whl文件是可以使用pip install命令离线安装的Python包,命名格式一般如下:
{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl
使用whl文件最讨厌的一点在于,由于文件名里指定了其兼容的操作系统版本等信息,在一台机器上可以使用的whl文件放到另一台机器上可能就没法用了,会报
.whl is not a supported wheel on this platform
的错误。查看当前机器支持的whl文件版本的命令为
pip debug --verbose
pip debug -v #效果同上
要解决这个问题最直接的做法就是根据上面这条命令输出的内容,修改whl文件名,如果需要安装的whl文件特别多的时候就会很费时间,写了一个Python脚本批量处理,可以把目录下的所有whl文件统一重命名成大多数平台都支持的py3-none-any版本,代码如下:
import os
def rename_whl(whl_file_folder: str, new_suf: str = 'py3-none-any'):
for name in os.listdir(whl_file_folder):
path = os.path.join(whl_file_folder, name)
if os.path.isfile(path) and os.path.splitext(name)[1] == '.whl':
suf_range = (name.find('-', name.find('-') + 1) + 1, name.rfind('.'))
new_name = name.replace(name[suf_range[0]: suf_range[1]], new_suf)
new_path = os.path.join(whl_file_folder, new_name)
os.rename(path, new_path)
if __name__ == '__main__':
import sys
rename_whl(sys.argv[1])
当然,Python这么进行限制是因为名字不符合要求的whl文件可能在当前平台上存在兼容问题,因此重命名后不排除出现其他Bug的可能。虽然但是还是希望Python什么时候能给pip install命令增加一个忽视命名检查的选项