使用protobuf进行编译,将.proto文件转换为.py文件时,是否可以循环?

时间:2019-01-13 01:09:52

标签: python tensorflow protocol-buffers object-recognition

我当时正在使用TensorFlow为对象识别项目建立环境。编译一些.proto文件时,我碰壁了。它努力找到了文件路径,然后找到了protobuf应用程序的路径,然后继续为每个单独的proto文件命令-- python_out=.

我在做什么/正在尝试做什么: 遵循了(https://www.edureka.co/blog/tensorflow-object-detection-tutorial/#object)这个教程之后,我设法在edureka上完成了

  • 将“模型”和“ protobuf”保留在一个“ Tensorflow”文件夹下
  • 进入Tensorflow文件夹,然后进入研究文件夹,并使用以下命令从此处运行protobuf:

    "path_of_protobuf's bin"./bin/protoc object_detection/protos/

命令

C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/anchor_generator.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/argmax_matcher.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/bipartite_matcher.proto --python_out=.

....依次类推,直到完成protos文件夹中的所有项目

所以这样做基本上是让我可以在每个原型文件下编译为.py文件。我确实有很多事情要做,所以要提高效率-如何循环执行此操作,以便一遍又一遍地遍历需要编译的原始文件来完成完全相同的任务?

2 个答案:

答案 0 :(得分:0)

我能够按照以下步骤解决此问题:

  1. 在命令行中导航至Tensorflow\models\research文件夹(路径可能因您而异)
  2. 输入此命令for %i in (object_detection\protos\*.proto) do protoc %i --python_out=.

将为此screenshot.py文件夹中的每个.proto文件创建Tensorflow\models\research文件

希望这会有所帮助。

答案 1 :(得分:0)

就我而言,进入研究目录后,我尝试了protoc object_detection/protos。 然后,出现此错误:

Command 'protoc' not found, but can be installed with:

sudo snap install protobuf           # version 3.6.0, or
sudo apt  install protobuf-compiler

See 'snap info protobuf' for additional versions.`

因此,我通过键入以下内容安装必要的软件包:sudo apt install protobuf-compiler

其后为:protoc object_detection/protos/*.proto --py

最后,您可以检入“ object_detection”文件夹,并且可以看到已为该文件夹中的每个文件生成了一个.py文件。