2012-06-30 2 views
6

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

import model_pb2 

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

これは、定義されていない変数として "PARAMETER"を報告します。私のプログラムには数十もの類似のエラーがありますので、それらを「適切に」修正したいと思います(つまり、単に警告を抑制するのではありません。)

答えて

0

強制組み込みに「model_pb2」を追加しようとしましたか?詳細はhttp://pydev.org/manual_101_project_conf2.htmlを参照してください。

+0

いや、。 – Talin

+0

そのzipファイルをソースコードで見て、何が起こっているのか確認できますか? –

1

私はそれが動作するように組み込み機能を使用していることがわかりましたが、すべてのプロトファイルが外部ライブラリの別の場所にある場合のみでした(http://pydev.org/manual_101_project_conf2.html参照)。

これは動作するはずです:

  1. 移動(または解凍)PyDevはプロジェクト外のディレクトリにmodel_pb2.py含めてコンパイルされたファイルをプロト。
  2. 空の__init__.pyファイルをmodel_pb2.pyと同じディレクトリに追加して、ライブラリとしてインポートできるようにします。
  3. eclipseで、Windows - >環境設定 - > pydev - >インタプリタ
  4. に移動し、model_pb2.pyのディレクトリをライブラリに追加します。
  5. 強制buildinsにmodel_pb2を追加します。

オートコンプリートに依存していない場合は、Ctrl + 1を使用してこれらのエラーを無視してください。as described in this answer。これはEclipse Keplerとpydev 2.8でテストされました。

0

protobuf 2.6.1とPyDev 4.5.5でこの問題が発生しました。私はどちらも上記の提案を私の場合に助けなかった。 protobuf enumを使用するときに「未定義変数」エラーを取り除いたのは簡単でした。

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

は、私は、これはOPのユースケースにも適用することができるかどうかわからないんだけど、私の中では、同じように簡単だった:助けない

from myprotobuf_module import SomeProtobufMessage 

some_protobuf_object = SomeProtobufMessage() 
some_enum = some_protobuf_object.SOME_ENUM 
関連する問題