安装构建时Python依赖版本不符(如protobuf需>=3.7当前3.6.0)如何解决
问题原因
pip安装tensorflow==2.3.1时默认会拉取最新发布版的protobuf依赖,而protobuf从3.21.0版本开始正式放弃Python 3.6支持,最低运行要求提升到Python 3.7,因此触发版本不匹配报错。tensorflow==2.3.1本身没有强制要求高版本protobuf,只要安装适配Python 3.6的最后一个兼容版protobuf即可正常运行,不会出现API兼容问题。
操作步骤
- 首先清理当前环境里残留的不兼容protobuf版本,在激活的Python 3.6虚拟环境中执行:
pip uninstall -y protobuf - 安装适配Python 3.6、同时兼容tensorflow 2.3.1的protobuf版本,最后一个全功能支持Python3.6的稳定版是3.20.3:
pip install protobuf==3.20.3 - 安装目标版本tensorflow,安装时指定升级策略避免pip自动把protobuf升级到不兼容的高版本:
pip install tensorflow==2.3.1 --upgrade-strategy only-if-needed
验证方法
安装完成后进入Python交互环境,依次执行导入命令验证:
import tensorflow as tf import google.protobuf print(tf.__version__) print(google.protobuf.__version__)
正常输出2.3.1和3.20.3、无导入报错即配置成功。
注意事项
- 不要尝试强行安装3.21.0及以上版本、4.x版本的protobuf,这些版本已经移除Python3.6兼容代码,即便跳过版本检查强制安装,运行时也会出现语法错误、C扩展加载失败、序列化接口不兼容等问题。
- 如果执行tensorflow安装命令时仍然触发protobuf升级,可中断安装后改用
pip install tensorflow==2.3.1 --no-deps安装,之后手动补装tensorflow 2.3.1的其余依赖即可。
内容的提问来源于stack exchange,提问作者54V4G3208
相关产品推荐
相关产品推荐

