问题标签 [protoc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2247 浏览

protocol-buffers - 导入另一个 proto 文件时出错

当我尝试编译 proto 文件以转换为 .java 时出现错误。
你能指出我错过了什么吗?

有效载荷.proto

BackendCommunicationService.proto

0 投票
3 回答
4284 浏览

python - tensorflow Protobuf 编译问题

我想为谷歌对象检测 API 编译 protobuf 库。我按照官方教程输入了protoc object_detection/protos/*.proto --python_out=.. 然后我得到的是“object_detection/protos/*.proto: Invalid argument”。谁能告诉我该怎么办?谢谢!

0 投票
1 回答
3956 浏览

python - Protobuf 编译问题

我一直在尝试运行 TensorFlow 库,为此我必须编译 Protobuf 库。我正在使用以下命令:

出现以下错误:

可运行的程序或批处理文件。

我不确定这里有什么问题。我正在从 TensorFlow 模型目录中运行它,但它仍然无法识别 protoc。

0 投票
2 回答
6049 浏览

python - Protocol Buffer 导入解析

在阅读这个相当长的问题之前,我提出了一个错误https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1103

Proto Packages and Name Resolution的文档说明

您可以通过导入其他 .proto 文件中的定义来使用它们。要导入另一个 .proto 的定义,您需要在文件顶部添加一个 import 语句。

example.proto依赖annotations.protoHTTP/JSON 转码为 gRPC这是一个简单的示例,但请注意我使用来自googleapis/google/api Git存储库的导入路径(即google/api/annotations.proto):

注意,annotations.proto依赖于http.proto - 它们是同一个包中的兄弟姐妹(googleapis/google/api

在此处输入图像描述

我的本地项目目录包含三个 .proto 文件:

  1. example.proto
  2. google/api/annotations.proto
  3. google/api/http.proto

...或作为一棵树:

目标(或“out”)目录也被添加,准备接收生成的 python 文件:

我完整的项目目录结构是:

  • example.proto
  • google/api/annotations.proto
  • google/api/http.proto
  • generated_pb2/google/api

...或作为一棵树:

有了这个,我可以编译我的原型(为可读性添加了格式):

打破这个:

  • generated_pb2- 生成的 python 文件和 gprc 文件的目的地。
  • ~/protoc/include/google/protobuf- 由于annotations.proto取决于google/protobuf/descriptor.proto,因此需要使用 protoc 二进制文件附带的常见 protos 的位置。
  • google/api- 位置annotations.protohttp.proto

这编译example.proto给:

  • generated_pb2/example_pb2.py
  • generated_pb2/example_pb2_gprc.py

但是,第一行generated_pb2/example_pb2.py导入生成的文件annotations.proto

该文件不存在。没问题,我annotations.proto单独编译:

打破这个:

  • generated_pb2/google/api- 生成的 python 文件和 gprc 文件的目的地。
  • ~/protoc/include/google/protobuf- 由于annotations.proto取决于google/protobuf/descriptor.proto,因此需要使用 protoc 二进制文件附带的常见 protos 的位置。
  • google/api-http.proto取决于哪个位置annotations.proto

不幸的是,此时我收到一个错误:

我想这是因为annotations.proto寻找http.protoin google/api

然而,目前尚不清楚如何解决这种依赖关系。 protoc --help记录-I标志:

如何解决取决于http.proto哪个annotations.proto

0 投票
0 回答
252 浏览

c++ - 32 位 docker 映像 - 编译后的二进制文件显示为 64 位

我正在尝试创建一个 32 位的 docker 镜像,上面有 Googles gRPC。

我创建了 Dockerfile 扩展自:

我能够同时编译 gRPC 和 Proto Buffers,但是,当我尝试使用 protoc 时,我得到了bash: /usr/local/bin/protoc: No such file or directory.

当我运行时file,我看到程序集被视为 64 位。

因此,我的问题是如何编写和构建一个实际上是 32 位的 docker 映像。当我运行uname -march在容器中运行时,我得到了x86_64,但dpkg --print-architecture显示i386它看起来实际上不是 32 位图像。

0 投票
16 回答
33292 浏览

python - protoc object_detection/protos/*.proto: 没有这样的文件或目录

我正在按照此处找到的示例进行操作。但是每当我输入命令“C:/Program Files/protoc/bin/protoc”object_detection/protos/ .proto --python_out=。我收到一条错误消息,提示 object_detection/protos/ .proto: No such file or directory。我无法创建名为 *.proto 的目录。所以我错过了一些关于如何做到这一点的基本信息。因为我找不到其他人抱怨这个问题,所以它一定很简单。我正在使用 Windows 操作系统。

0 投票
0 回答
511 浏览

docker - GCP Docker 错误:文件不在使用 --proto_path (或 -I)指定的任何路径中

我们正在尝试在 GCP 上托管 tensorflow 对象检测模型。我们在运行“ gcloud app deploy ”之前维护了以下目录结构。为方便起见,我附上了问题的配置文件。我们正在收到下面提到的部署错误。请提出解决方案。

  • +根
    • +object_detection/
    • +苗条/
    • +环境
    • +app.yaml
    • +Dockerfile
    • +requirement.txt
    • +index.html
    • +test.py

Dockerfile

需求.txt

应用程序.yaml

毕竟,我正在使用gcloud init建立谷歌云环境, 然后启动命令gcloud app deploy

部署解决方案时出现以下错误。

错误:

有一个目录“object_detection/protos”,所有必要的文件都在那里。仍然收到部署错误。请建议在 dockerfile 中更改何处以成功部署它。

我的假设: GCP 无法找出 protc 文件的路径。可能我必须更改 Docketfile 中的某些内容。但无法弄清楚解决方案。请回答。

注意:此设置在本地机器上运行良好。但不能在 GCP 中工作

0 投票
0 回答
96 浏览

dataflow - apache beam(dataflow2)在使用protoc3.4时没有使用正确的ProtoCoder

我正在迁移到 dataflow2 以及 proto compiler3.4。

当我用这个叶子嵌套原型时,我没有在原型对象上得到 Coder.NonDeterministicException:

它抱怨java对象不是确定性可序列化的。但它不应该使用java序列化,它应该是proto序列化。

当我添加它时,它可以工作: pipeline.getCoderRegistry().registerCoderForClass(NodeId.class, ProtoCoder.of(NodeId.class));

GeneratedMessage不使用新的 proto 编译器调用 GeneratedMessage。现在它被称为GeneratedMessageV3. 并且 GeneratedMessageV3 没有扩展 GeneratedMessage。

因此,可能需要升级默认编码器注册表以添加 GeneratedMessageV3 的 proto 编码器

0 投票
1 回答
502 浏览

build - 构建 caffe,错误链接 google::protobuf,Debian 9.1

我有这个问题,我正在尝试在 debian 机器上构建 caffe,我将构建所有内容,但最后在链接时我得到多个未定义的对 google::protobuf::... 的引用

我正在附加带有构建日志的文件,其中包含错误消息 (build_caffe.txt)。libprotobuf-dev 和 protoc 都已安装。(dpkg -s 的输出在 proto.txt 中)

以下是我构建 caffe 的方法。

请问有人知道这个问题的解决方案吗?

原型.txt

build_caffe.txt

0 投票
1 回答
760 浏览

protocol-buffers - 协议缓冲区 - 仅生成 OuterClasses

我正在尝试从几个 proto 文件生成 java 源文件。

我使用的是 Ubuntu 17.04。

我使用以下 shell 脚本来执行此操作:

我还尝试了以下方法,我在其中指定了protoc-gen-grpc-java插件:

在这两种情况下,结果是相同的。

问题是,这些命令只生成 XXXOuterClass.java 文件。没有生成服务类、消息或存根。

如何使用生成所有 java 类protoc