Pylintはpkg_resources.resource_filenameが好きではありません
-
27-10-2019 - |
質問
私のスクリプトで私は使用しています:
python
from pkg_resources import resource_filename
PydevとPylint 0.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を分配します。
解決
プロジェクトのPydev Pythonインタープリター定義を変更することにより、トラブルの動的モジュールをロードできます。 「強制ビルトイン」のデフォルトリストを構成する 使用する動的に生成された定義を含める。強制的なビルトインは、動的に生成されたクラスを砲撃し、ロード/検査することにより生成されます。
Pythonインタープリター定義で (preferences => pydev => interpreters => python interpreter)
, 、Pydevプロジェクトに現在使用されている通訳を選択します。を選択 Forced Builtins
タブ。を押します New...
ボタン、追加します pkg_resources
リストに。
私はこれをやったが、今では私のエラーがなくなっており、私のプロジェクトでは自動複雑なメソッドがうまく機能します。 Python 2.7.9、Pydev 3.3.3、およびEclipse Kepler R2を使用しています。
ピリントの場合、できます プロジェクトのピリント構成で警告をグローバルに無効にする, 、ファイル全体、またはその使用の1つの場合。追加できます # pylint: disable=E1101
ファイルの開始時にコメントして、そのモジュールに対してそれを無効にするか、それを使用してそのインスタンスを無効にするためにそれを使用する上の行でコメントします。また、時間のかかる方法もあります クラスが特定の方法を持っていることをピリントに手動で示唆する.
他のヒント
同じ問題がありました。 Pydevのために私は見つけました 答え pydev.orgで:エラーラインに移動し、Ctrl-1を押して、「未定義の変数」を選択します。その後、Aを追加します #@UndefinedVariable
コメントすると、エラーが消えます。
Pylintの場合、E1101を無効にしてトリックを行い、プラグマ # pylint: disable=E1101
. 。 Pylint Pragmasは同じインデントレベルで行く必要がありますが、Pydevのコメントは同じ行にある必要がありました。私のややコメント整理整頓された関数は次のとおりです。
def get_test_datafile(file_):
# pylint: disable=E1101
return pkg_resources.resource_string(__name__, #@UndefinedVariable
'testdata/'+file_)