M1 Mac运行Tensor2Tensor遇TypeError及protobuf依赖冲突求助
解决M1 MacBook上Tensor2Tensor的依赖错误问题
一、修复entry_points()参数错误
这个问题是因为你安装的importlib-metadata版本过高,和Tensor2Tensor 1.15.7不兼容,按以下步骤操作:
打开终端,激活你的miniconda环境:
conda activate 你的环境名称若忘记环境名,输入
conda env list即可查看所有环境,找到你使用的Python 3.8环境。降级
importlib-metadata到兼容版本:pip install importlib-metadata==3.10.0强制固定protobuf版本为3.20.0,避免升级:
pip install protobuf==3.20.0 --force-reinstall
二、验证修复效果
执行命令测试:
t2t-trainer --registry_help
如果仍有问题,可尝试创建全新环境,规避旧环境的依赖混乱:
三、创建全新miniconda环境(终极方案)
创建名为
t2t_env的新环境,指定Python 3.8:conda create -n t2t_env python=3.8过程中输入
y确认即可。激活新环境:
conda activate t2t_env按顺序安装兼容版本的依赖:
# 先安装TensorFlow相关组件 pip install tensorflow-macos==2.10.0 tensorflow-metal==0.6.0 # 安装指定版本的Tensor2Tensor pip install tensor2tensor==1.15.7 # 安装兼容的importlib-metadata和protobuf pip install importlib-metadata==3.10.0 protobuf==3.20.0
错误原因说明
entry_points()参数错误:Tensor2Tensor 1.15.7基于旧版importlib-metadata的API开发,你安装的4.12.0版本修改了entry_points的参数规则,导致调用失败,降级到3.10.0即可匹配。Descriptors cannot not be created directly错误:protobuf 4.x版本与你使用的TensorFlow 2.10.0、Tensor2Tensor 1.15.7不兼容,TensorFlow 2.10仅支持protobuf 3.20.x系列,升级到4.x会破坏内部描述符创建逻辑,必须保持3.20.0版本。
内容的提问来源于stack exchange,提问作者jzy
相关产品推荐
相关产品推荐

