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

使用grpcio-tools生成含google.type.Decimal的_pb2文件遇错求助

解决gRPC导入google.type.Decimal编译错误的方法

问题原因

protoc编译时仅指定了当前项目的./proto作为导入路径,无法定位到googleapis-common-protos包中存放于site-packages目录下的google/type/decimal.proto文件,导致导入失败。

解决步骤

1. 获取site-packages绝对路径

执行以下命令,获取虚拟环境中site-packages目录的绝对路径:

python -c "import site; print(site.getsitepackages()[0])"

输出示例:/home/user/venv/lib/python3.10/site-packages

2. 修改protoc编译命令

将获取到的site-packages路径添加到protoc的-I(导入路径)参数中,与原有./proto路径并列:

python -m grpc_tools.protoc -I./proto -I<site-packages绝对路径> --python_out=./proto/ --grpc_python_out=./proto/ --mypy_out=./proto/ ./proto/*.proto

假设site-packages路径为./venv/lib/python3.10/site-packages,实际命令如下:

python -m grpc_tools.protoc -I./proto -I./venv/lib/python3.10/site-packages --python_out=./proto/ --grpc_python_out=./proto/ --mypy_out=./proto/ ./proto/*.proto

3. 验证编译结果

执行修改后的命令后,protoc将能正确找到google/type/decimal.proto文件,顺利生成对应Python代码,原有的编译错误会消失。

额外说明

  • 确认googleapis-common-protos包已正确安装(当前1.63.0版本兼容),且site-packages目录下确实存在google/type/decimal.proto文件。
  • 生成的代码会自动处理google.type.Decimal的导入逻辑,后续可直接通过生成的代码引用该类型完成Decimal数据的gRPC传递。

内容的提问来源于stack exchange,提问作者Alpensin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:51:02