python - 如何在 Windows 上运行 protobuf python 插件

标签 python windows protocol-buffers

我目前正在使用 Protobuf 插件根据一组 Protobuf 文件生成一些自定义 C# 代码。它在 Linux 上运行良好,我也想在 Windows 上运行它,以便直接从我的 Visual Studio 项目生成此代码。

这是我当前(不成功)使用的命令行:

path\to\protoc.exe --plugin=protoc-gen-my-plugin=path\to\my-plugin.py --my-plugin_out=output\path\gen my_proto.proto

这是我收到的错误:

--my-plugin_out: protoc-gen-my-plugin: %1 n'est pas une application Win32 valide.

我安装了 Python 2.7.11,它在我的路径中。我还尝试使用 x86 和 x64 可执行文件运行 protoc.exe。

是否有任何我不知道的限制或者我错过了什么?

最佳答案

我能够通过将 python 插件封装在 .bat 文件中来解决我的问题。这是我使用的代码:

@echo off
chdir path\to\my-plugin
python -u my-plugin.py

运行 python 脚本时的“-u”选项非常重要,因为否则标准输入将被缓冲。由于 protoc 通过 stdin 将所有输入传递给插件(要解析的 .proto 文件),这非常重要。并且输出由插件写入标准输出,因此没有问题。

这是使用我的插件执行 protoc 的最终命令:

path\to\protoc.exe --plugin=protoc-gen-my-plugin=redirect.bat --my-plugin_out=output\path\gen my_proto.proto

关于python - 如何在 Windows 上运行 protobuf python 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42444090/

相关文章:

python - 如何向 mayavi 图中添加图例

windows - 在 Powershell 中获取正确输出的问题

node.js - 如何获取protobuf.js以输出枚举字符串而不是整数

java - 带 Protocol Buffers 的 JAX-RS 教程应用程序

python - 用中文在Python中建字典

python - Flask-SQLAlchemy 更新一对多记录

python - 如何在 pandas 数据框中的列中填充字母数字系列?

c# - 从 Windows 服务创建文件/文件夹时的最佳实践

windows - 将 Eclipse 配置为 Go IDE

c++ - 在一个 Protocol Buffer 二进制文件中存储多条消息