2016-08-28 5 views
0

私は2つのprotobufメッセージを別々のディレクトリに置いています。一方のメッセージは他方のメッセージに入れ子になっています。基本的には、このような何か:次のようにファイルがあるPythonの別のディレクトリからprotobuf依存関係をインポートする

import "msg1.proto"; 

message Message2 { 
    optional Message1 message1 = 1; 
} 

は:

dir 
+---dir1 
|  msg1.proto 
| 
\---dir2 
    | msg2.proto 

自動生成されたファイルmsg2_pb.pyはラインimport msg1_pbが含まれています。問題は、msg1_pb.pymsg2_pb.pyが異なるディレクトリに存在するため、インポートが失敗することです。

追加できるフラグはありますか。msg1_pbmsg2_pbは、ディレクトリ構造を認識しやすいようにコンパイルされますか? msg2をコンパイルするとき

は現在、私のコマンドラインは次のようになります。

protoc.exe --proto_path=dir1 --python_out=out msg2.proto

答えて

0

ロイ、

あなたは既に解決策を発見したかもしれません!

  1. sys.path.append('/.../dir/out') 
    
  2. をsys.pathへ二生成いるProtobufクラスを含むフォルダを追加します。とにかく、ここで私はどちらかはあなたのために働く必要があり、これを解決するために2つのメソッドを使用している...

    を行きます

  3. 編集インポート

    # msg2_pb.py 
    from out import msg1_pb 
    
0絶対パスを使用するために生成いるProtobufクラス

私は自分自身の第2のアプローチを好みます(sys.pathを使いこなすのを避けます。 protobufクラスはまれにしか再生成されません)。

関連する問題