簡體   English   中英

從 protos 編譯 grpc python 代碼的問題

[英]Issues in compiling grpc python code from protos

我正在使用 python 2.7.6 版和 grpcio 1.12.0 版。 我有一個帶有消息定義的原型,其中包含類似這樣的枚舉

enum Test {
    first 0;
    reserved 1;
    second 2;
}

現在當我嘗試使用命令編譯時

python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. mydata.proto

我收到類似這樣的錯誤消息

Missing numeric value for enum constant

是因為python和grpcio版本嗎?

您的消息定義使用了無效的語法。 也許你打算這樣:

enum Test {
    first = 0;
    reserved 1;
    second = 2;
}

注意添加的等號。 此枚舉指定兩個值, firstsecond ,並保留“1”以供將來使用。

參考:https ://developers.google.com/protocol-buffers/docs/proto3#enum

我會在這里給出一個答案,因為當我在枚舉中reserved字段時遇到相同的錯誤Missing numeric value for enum constant時,這是 Stack Overflow 的頂部帖子。

我試圖編譯 C++ 的頭文件並下載了從協議緩沖區教程鏈接protoc編譯器 運行 Ubuntu 18.04 並且無法識別保留字段。

這個 Github 問題提到我需要 3.6 版,但我剛剛下載並制作了 3.20 版,但它仍然無法正常工作。

對我來說,問題是我沒有一直遵循文檔。 protobuf 存儲庫中有一個自述文件,部分內容是:

要構建和安裝 C++ 協議緩沖區運行時和協議緩沖區編譯器 (protoc),請執行以下操作:

 ./configure make -j$(nproc) # $(nproc) ensures it uses all cores for compilation make check sudo make install sudo ldconfig # refresh shared library cache.

我做了./configuremakemake check步驟,但后來忘記了sudo make installsudo ldconfig 一旦我這樣做了,當我運行protoc --version時,我得到了正確的版本。

我確實遇到了一個問題,我做了所有這些,得到了正確的版本,然后仍然有錯誤,但是我使用的終端窗口在我安裝之前就已經打開了。 一旦我運行source ~/.bashrc我就能夠毫無問題地構建消息!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM