离线安装python包,遇到is not a supported wheel on this platform

背景

没有外网的情况下,需要安装python的第三方依赖包。先使用pip下载了安装包,然后上传到需要安装第三方包的机器中去,结果安装的时候出现了“is not a supported wheel on this platform”,机器的版本是python3.7,win64,而安装的包为cp36的。

首先想到的是,先想办法找到最新的包为cp37的,但是发现最新的包只有cp36的,然后想到的方式,降python的版本,但立马把这个方案否定了。最后通过修改包名称解决问题。

过程

下载
这里是需要离线安装paramiko,首先在有外网的机器中,新建文件夹,进入文件夹后,进入cmd命令行模式,输入以下命令下载包

python -m pip download paramiko

下载成功后,本地会出现多个的.whl文件,在命令中,输入以下命令,将文件名称写入到文件中

dir /b > requirements.txt

这时,会自动新建requirements.txt文件,且包含各个.whl文件名,打开文件,去除名称“requirements.txt”

cffi-1.15.1-cp37-cp37m-win_amd64.whl
cryptography-38.0.1-cp36-abi3-win_amd64.whl
paramiko-2.1.6-py2.py3-none-any.whl
pyasn1-0.4.8-py2.py3-none-any.whl
pycparser-2.21-py2.py3-none-any.whl

然后上传至需要安装的机器

安装
进入对应目录,打开命令行,执行以下命令

python -m pip install --no-index --find-link=./ -r requirements.txt

如果版本对上的话,正常是能够安装完成的,但是此时出现报错
ERROR:xxx.whl is not a supported wheel on this platform
比如安装cryptography-38.0.1-cp36-abi3-win_amd64.whl

解决思路

按照网上的方式,先查看机器的python支持版本,命令如下

# 1、win32常用:
import pip;
print(pip.pep425tags.get_supported())

# 2、amd64常用:
import pip._internal
print(pip._internal.pep425tags.get_supported())
# 或
import pip._internal.pep425tags
# 或
import wheel.pep425tags as w

# 3、如果还是不行,用以下命令在CMD执行:
python -m pip debug --verbose

可以查看类似“cp37-cp37m-win_amd64”这样的信息,主要包括3块,cp37、cp37m、win_amd64

正常情况下,只要再去下载cp37对应的版本即可,然而我遇到了没有cp37的版本,最新的只有cp36的版本,那要如何做呢?

很简单的方式,将cryptography-38.0.1-cp36-abi3-win_amd64.whl,直接将文件名中的cp36改成cp37即可,然后继续安装,但还是出现了同样的问题,这时可以将abi3改成none即可,最终改成cryptography-38.0.1-cp37-none-win_amd64.whl,这时再去安装就能安装成功了。

思考
pip的第三方包很不可思议,可以直接修改包的版本,然后就能安装成功,主要涉及三个(cp37, none, any),支持这种方式来修改,也就是将cp36改成cp37,abi3改成none,如果还不行,可以将win_amd64改成any

到此,按照上边的方式,就可以安装成功了

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值