5

私のスクリプトでは、次を使用します。

python from pkg_resources import resource_filename

PyDevとpylint0.23はどちらも、ここで未解決のインポートについて不平を言っています。

E0611 No name 'resource_filename' in module 'pkg_resources'

私が理解しているように、これは、PyDevとpylintの両方が、実際に解析/コンパイルを試みることなく、ソースコード分析のみを実行するという事実が原因で発生します。そしてどうやらpkg_resourcesを定義するために何か特別なことをしますpkg_resources。パッケージとシンボルはもちろんそこにあり、すべてがうまく機能します。2つの質問:

  • EclipseとPyDevの両方に、それらが間違っていることをどのように納得させることができますか?
  • そもそも何が問題の原因ですか?私は他の人がこの種の問題を抱えているのを見つけていません、そして私は私の状況がいくぶん独特であるとは思えません... :)

Python 2.7.1(OSXで)、0.6.19を配布します。

4

2 に答える 2

6

プロジェクトのpydevpythonインタープリター定義を変更することで、面倒な動的モジュールをロードできます。動的に生成された定義を使用するように、「強制ビルトイン」のデフォルトリストを構成します。強制ビルトインは、動的に生成されたクラスをシェルアウトしてロード/検査することによって生成されます。

Pythonインタープリター定義(preferences => pydev => interpreters => python interpreter)で、pydevプロジェクトに現在使用されているインタープリターを選択します。タブを選択しForced Builtinsます。ボタンを押して、リストNew...に追加pkg_resourcesします。

私はこれを実行しましたが、エラーはなくなり、メソッドのオートコンプリートはプロジェクトで問題なく機能します。私はpython2.7.9、pydev 3.3.3、およびeclipsekeplerr2を使用しています。

pylintの場合、プロジェクトのpylint構成で、ファイル全体に対して、またはその使用の1つのインスタンスに対して、警告をグローバルに無効にすることができます。ファイルの先頭にコメントを追加し# pylint: disable=E1101てそのモジュールに対して無効にするか、上記の行でコメントを追加してそのインスタンスに対して無効にすることができます。クラスに特定のメソッドがあることを手動でpylintに示唆するための時間のかかる方法もあります。

于 2015-06-18T21:25:51.073 に答える
3

私も同じ問題を抱えていました。Pydevの場合、pydev.orgで答えを見つけました。エラー行に移動し、ctrl-1を押して、「未定義の変数」を選択します。#@UndefinedVariableその後、コメントが追加され、エラーが消えます。

pylintの場合、E1101を無効にすると、プラグマというトリックが実行され# pylint: disable=E1101ます。Pylintプラグマは同じインデントレベルで実行する必要がありますが、pydevコメントは同じ行に配置する必要がありました。私のややコメントが散らかった関数は次のようになりました:

def get_test_datafile(file_):
    # pylint: disable=E1101
    return pkg_resources.resource_string(__name__, #@UndefinedVariable
                                         'testdata/'+file_)
于 2011-08-02T14:43:34.457 に答える