TensorFlow Protobuf编译问题

3
我想为Google目标检测API编译protobuf库。我按照官方教程输入了protoc object_detection/protos/*.proto --python_out=.,但是我得到的是"object_detection/protos/*.proto: Invalid argument"。请问有人可以告诉我该怎么做吗?谢谢!

我通过逐个编译.proto文件来解决了这个问题。我认为问题在于“*”。我正在使用Win10系统。但仍然想知道是否有一种在Windows中可以用一个命令编译所有.proto文件的方法。逐个编译它们太傻了。 - sean
3个回答

1
如果您的操作系统是Windows,则*.可能无法正常工作。 解决此问题的好方法是使用bash。 下载 git for windows,安装时不要忘记选择git bash。从tensorflow / models / research /中,右键单击,选择git bash,然后粘贴命令,在我的笔记本电脑上可以很好地工作。

要检查您是否正确处理了proto文件,请转到tensorflow/models/research/object_detection/protos,您将看到许多从proto文件处理而来的py脚本。 - ZhangGa

0

尝试

protoc --python_out=. object_detection/protos/*.proto

使用方法:

protoc [OPTION] PROTO_FILES

可能是 shell(cmd?)没有将 *.proto 扩展为文件。尝试其他 shell 或者使用 protoc --python_out=. 1.proto 2.proto 3.proto 命令。 - Tomasz Jakub Rup
这对我来说意味着:文件不在使用--proto_path(或-I)指定的任何路径中。您必须指定一个包含此文件的--proto_path。请注意,proto_path必须是.proto文件名称的确切前缀 - protoc无法弄清楚两个路径(例如绝对路径和相对路径)何时等效(比你想象的要困难)。 - MrChadMWood

0

我知道这是一个晚回答,但经过大约20分钟的尝试不同的方法后,我决定在另一个终端上尝试并在git bash上尝试。

您需要在正确的目录中,只需cd进入/models-master/research并使用mkdir创建一个名为1prts的文件夹,一旦您在research目录内部。

自上次发布以来,存储库已更改,因此这是您需要运行的命令:

protoc object_detection/protos/*.proto --python_out=./1prts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接