今天安装环境时碰到了这个问题,一脸懵逼,经过查阅得知是因为某个.whl文件和python的版本不兼容导致了这个问题。我看了很多人的回答,把别人的成果总结起来发现其实解决这个问题也很简单,但是这里不保证可以适用所有人的环境。

造成这个问题的原因是因为版本的兼容性问题,通常解决方法是:
1.下载一个可以兼容版本的.whl文件(适用于Windows系统)
2.切换python版本(适用于Linux系统)

查看whl和python支持的版本

如果查看是否不兼容(报错了肯定是不兼容,但是需要弄清楚不兼容出现在哪里)。
执行如下命令:

pip debug --verbose
pip3 debug --verbose 

注意:如果此命令无法执行的话,可以去查阅文章底部的参考文献,有适合pip 20.0以下版本的方法。或者你最好先升级一下pip。

Windows系统执行第一条即可(如果只有一个python环境,通常是python3),Linux系统执行两条命令,执行命令以后可以看到whl文件和python版本的兼容情况。这里以我Windows系统举例说明:

在这里插入图片描述

cp37和py37应该指的都是python3.7及以上版本,所以可以看具体下载文件中会带有兼容版本的说明
注意:这里的cp可能指的是C Python。

这里以tensorflow举例说明:
从下面这幅图可以看出来,该文件的命名规范,首先是兼容的python版本,然后是操作系统,最后是CPU架构。这是一个很规范的命名,因为很多人的环境都是不一样的,必须要有这么多版本。
在这里插入图片描述

解决问题

whl文件可替换

如果你只是需要一个whl文件,但是版本和系统的python不兼容,那么你的解决方式就很简单了,直接去下载一个兼容的版本即可。

whl不可替换

我今天遇到的情况是属于不可替换的,因为那个whl文件属于一个系统的子部分。所以只能从系统的python环境上面去解决问题了。首先我们是通过pip来查看兼容性的,那么解决问题也是从pip入手。在Linux系统中会有一个默认的python2.7,但是现在大家几乎都会下载一个python3.+的版本。这样就有可能造成了pip的错误问题,因为一些错误网络教程的问题,很多人的pip和pip3会指向相同了。

这里以我的Windows系统举例:
在这里插入图片描述
这里无论是pip还是pip3都指向了python3的版本,这就导致我无法使用python2来安装包了。
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 基于此,你如果想要在python2环境安装一个whl文件,就会遇到文章标题的那个问题:is not a supported wheel on this platform

那么解决方案呢?也很简单,将pip和pip3的指向区分开即可。
在Linux系统下,执行此命令:which pip 得到pip的位置,然后修改最上面的注释,将python3改为python2,即可解决。在Windows下面,因为Linux的那行脚本只是单纯的注释了,这个不知道怎么解决。并且通常在Windows下面也只需要python3的版本,所以更换软件的版本显然是更明智的做法。

#!/usr/bin/python3   # 修改此为 #!/usr/bin/python2
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.cli.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

说明

这个教程应该可以解决大部分的问题了,不过也不能保证解决所有此类问题。因为每个人的环境都不相同,这点是很难保证的。而且很多教程都已经陈旧不堪,继续存在也只会误导到了别人,所以在网络上查询信息时一定要有一定的甄别能力,不能全盘相信别人的教程,我今天解决这个问题就踩了很多的坑。所以我在标题上面要加上时间,如果你看到的时候离这个时间已经很久了,那么这个解决方案可能就已经过时了。

参考文献

修改pip默认的Python版本方法
【2021新教程】解决is not a supported wheel on this platform-解决pip has no attribute pep425tags-解决网上旧教程不适用的问题

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐