6

プロトコル バッファを使用する PyDev プロジェクトがあります。プロトコル バッファ ファイルは、protoc コンパイラによって生成された zip ファイルにあります。プログラムを実行するとすべてが機能しますが、PyDev は列挙定数ごとに「インポートからの未定義変数」を報告します。たとえば、次のようになります。

import model_pb2

value = model_pb2.Expression(type = model_pb2.Expression.PARAMETER)

列挙型定数 "PARAMETER" が未定義の変数として報告されます。私のプログラムには数十個の同様のエラーがあり、それらを「適切に」修正したいと思います (つまり、単に警告を抑制するのではなく)。

4

3 に答える 3

1

protobuf 2.6.1 と PyDev 4.5.5 でこの問題が発生しました。上記の両方の提案を試しましたが、私の場合はどれも役に立ちませんでした。protobuf列挙型を使用するときに「未定義の変数」エラーを取り除くことになったのは簡単でした:

protobuf モジュールではなく、インスタンス化された protobuf オブジェクトの列挙型にアクセスします。

これがOPのユースケースに適用できるかどうかはわかりませんが、私の場合は次のように簡単でした:

from myprotobuf_module import SomeProtobufMessage

some_protobuf_object = SomeProtobufMessage()
some_enum = some_protobuf_object.SOME_ENUM
于 2016-04-07T23:04:28.883 に答える
1

for builtins as を使用すると機能することがわかりましたが、すべての proto ファイルが外部ライブラリにある別の場所にある場合に限ります ( http://pydev.org/manual_101_project_conf2.htmlを参照)。

これはうまくいくはずです:

  1. model_pb2.py を含むコンパイル済みの proto ファイルを pydev プロジェクトの外部のディレクトリに移動 (または解凍) します。
  2. 空の __init__.py ファイルを model_pb2.py と同じディレクトリに追加して、ライブラリとしてインポートできるようにします。
  3. Eclipse では、Windows -> Preferences -> pydev -> Interpreter に移動します。
  4. model_pb2.py を含むディレクトリをライブラリに追加します。
  5. 強制ビルドインに model_pb2 を追加します。

オートコンプリートに慣れていない場合は、ctrl+1 を使用して、代わりにこの回答で説明されているようにこれらのエラーを無視できます。これは、Eclipse Kepler と pydev 2.8 でテストされました。

于 2013-08-13T20:31:28.797 に答える
0

強制ビルトインに「model_pb2」を追加してみましたか? 詳細については、http: //pydev.org/manual_101_project_conf2.htmlを参照してください。

于 2012-07-02T10:42:14.457 に答える