You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

虚拟环境中使用Formant与Protobuf时导入google.protobuf.runtime_version报错的解决咨询

虚拟环境中使用Formant与Protobuf时导入google.protobuf.runtime_version报错的解决咨询

看起来你遇到的是Formant依赖的Protobuf版本和环境实际导入的模块不兼容导致的问题,我给你梳理几个可行的解决思路:

  • 先确保虚拟环境的纯净性,排除外部干扰
    有时候系统全局的Python包或者其他虚拟环境的残留会干扰当前环境,先确认你激活的虚拟环境是正确的:
    运行以下命令检查路径:

    which python
    which pip
    

    确保输出的路径都是你创建的mi_entorno/bin目录下的,不是系统全局路径。如果不是,重新激活虚拟环境:source mi_entorno/bin/activate。

  • 彻底重新安装指定版本的Protobuf和Formant
    可能之前的安装过程中有缓存或者残留文件导致版本异常,按以下步骤操作:

    1. 卸载已有的Protobuf和Formant:
      pip uninstall -y protobuf formant
      
    2. 清理pip缓存,避免安装旧的残留文件:
      pip cache purge
      
    3. 重新安装Formant,让pip自动处理兼容的Protobuf版本:
      pip install formant==1.230.2
      
      因为Formant 1.230.2明确要求protobuf<=3.19.5,>=3.15.8,pip会自动安装符合要求的版本,不会出现不兼容情况。
  • 如果上述方法无效,尝试修改第三方库的导入代码(临时方案)
    报错的根源是Formant生成的proto文件里引用了Protobuf 3.19.5中不存在的runtime_version模块(这个模块是在更高版本的Protobuf中才添加的)。你可以临时修改报错的文件:

    1. 找到报错的文件路径:<venv_path>/lib/python3.10/site-packages/formant/protos/agent/v1/agent_pb2.py
    2. 打开文件,找到第9行的导入语句:
      from google.protobuf import runtime_version as _runtime_version
      
    3. 把这一行注释掉;如果后续代码用到了_runtime_version,可以替换成兼容3.19.5的逻辑:
      # 替代为3.19.5兼容的版本检查逻辑
      import google.protobuf
      _runtime_version = type('RuntimeVersion', (), {'PROTOBUF_VERSION': google.protobuf.__version__})()
      

    注意:修改第三方库的代码不是长久之计,后续更新Formant或者Protobuf时会覆盖这个修改,最好还是联系Formant官方,确认是否有兼容Protobuf 3.19.x的更新版本。

  • 检查是否有其他依赖包强制升级了Protobuf
    运行以下命令查看当前环境中所有包的依赖情况,看看有没有其他包强制安装了更高版本的Protobuf:

    pip check
    

    如果有其他包依赖更高版本的Protobuf,你可能需要调整这些包的版本,或者寻找一个所有包都兼容的Protobuf版本。

备注:内容来源于stack exchange,提问作者Roberto Sanabria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:58:09