【问题标题】:Is it possible to loop when compiling with protobuf, converting .proto files to .py files?使用protobuf编译时是否可以循环,将.proto文件转换为.py文件?
【发布时间】:2019-01-13 01:09:52
【问题描述】:

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

我在做什么/想要做什么: 按照这个(https://www.edureka.co/blog/tensorflow-object-detection-tutorial/#object)关于 edureka 的教程,我设法做到了:

  • 将“models”和“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 文件夹中的所有项目

所以这基本上允许我在每个 proto 文件下编译为 .py 文件。我确实有更多的事情要做,所以为了提高工作效率 - 我如何循环这个以一遍又一遍地通过需要编译的原始文件完成完全相同的任务?

【问题讨论】:

  • 通常这种类型的任务会通过脚本自动完成。 Bash 很常见,我看到你在 Windows 上,所以你可以使用 python 来执行 shell 命令或 powershell。该脚本将在项目根目录下搜索.proto 文件,然后为它发现的每个文件运行protoc </path/to/proto/> --python-out=.
  • 也许我没听懂。为什么不简单地C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/*.proto --python_out=.? (注意星号而不是文件名)
  • 仅仅因为有大约 40 个文件需要评论 - time is money. 我查看了 windows 脚本主机的使用;我现在解决了这个问题 - 谢谢。

标签: python tensorflow protocol-buffers object-recognition


【解决方案1】:

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

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

它将为Tensorflow\models\research 文件夹中的每个.proto 文件创建.py 文件,就像在这个screenshot 中一样

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    就我而言,进入研究目录后,我尝试了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 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 2019-02-09
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多