[英]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;
}
注意添加的等號。 此枚舉指定兩個值, first
和second
,並保留“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.
我做了./configure
、 make
和make check
步驟,但后來忘記了sudo make install
或sudo ldconfig
。 一旦我這樣做了,當我運行protoc --version
時,我得到了正確的版本。
我確實遇到了一個問題,我做了所有這些,得到了正確的版本,然后仍然有錯誤,但是我使用的終端窗口在我安裝之前就已經打開了。 一旦我運行source ~/.bashrc
我就能夠毫無問題地構建消息!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.