Python3.8环境pip安装tensorflow==1.12.2报无匹配版本错误
问题现象
执行依赖安装命令:pip install -r requirements.txt -r requirements-local.txt
运行环境为Python 3.8,此前已自行安装过TensorFlow,安装时抛出如下报错:
ERROR: Could not find a version that satisfies the requirement tensorflow1.12.2 (from versions: 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0rc0, 2.6.0rc1, 2.6.0rc2, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.7.0rc0, 2.7.0rc1, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.8.0rc0, 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1)
ERROR: No matching distribution found for tensorflow1.12.2
问题原因
- 核心原因是版本适配冲突:
tensorflow==1.12.2是2018年发布的旧版本,官方最高只提供Python 3.6环境下的安装包,完全没有适配Python 3.8的版本。从报错里列出的可安装版本也能印证,Python 3.8环境下pip能检索到的最低TensorFlow版本为2.2.0,不存在1.12.2的对应安装包。 - 之前自行安装的TensorFlow为2.x系列版本,和依赖文件中锁死的1.12.2版本号不匹配,pip执行安装时会严格按照依赖文件指定的版本检索包,不会直接复用已安装的高版本。
可选解决方法
- 适配旧版依赖:新建Python 3.6版本的虚拟环境,在新环境中重新执行依赖安装命令,即可正常拉取到适配版本的tensorflow1.12.2,不需要修改项目代码,是兼容性最高的方案。
- 适配当前环境:打开两个依赖文件,找到写有
tensorflow==1.12.2的行,将其修改为当前环境已安装的TensorFlow版本号,或者直接删掉这一行跳过TensorFlow的版本校验。注意:该方案仅适用于项目代码没有强依赖TensorFlow 1.x独有API的场景,如果代码中大量使用tf.contrib、1.x静态图相关接口,直接用2.x版本会出现运行报错,需要额外调整代码做API兼容。 - 折中兼容:如果不想降Python版本,也不想大范围改代码,可以把依赖中的TensorFlow版本修改为
1.15.5,这是TensorFlow 1.x系列的最终维护版本,官方提供了Python 3.8的适配安装包,对1.x版本的API兼容性很高,只需要微调少量不兼容的代码就能正常运行。
内容的提问来源于stack exchange,提问作者Rohit517
相关产品推荐
相关产品推荐

