1

私のコードでは、コンパイルされた拡張機能(私の場合はigraph)のオブジェクトを使用しています。PyLintを使用してコードを分析します。PyLintは、属性(igraphなどGraph.adjacent)が欠落していることについて不平を言いますが、それは明らかに存在します(コードはエラーなしで実行されます)。このメッセージの原因は何でしょうか?

ここにいくつかのテストコードがあります

import igraph
gr = igraph.Graph(10)#create a graph with 10 vertices
edges = gr.es #no pylint errors
vertices = gr.vs #no pylint errors
print gr.are_connected(0, 1) #pylint error E1101
print gr.adjacent(0) #pylint error E1101

そしてこれはpylintの出力です:

************* Module temp
C0111:  1: Missing docstring
C0103:  2: Invalid name "gr" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103:  3: Invalid name "edges" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103:  4: Invalid name "vertices" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
E1101:  5: Instance of 'Graph' has no 'are_connected' member
E1101:  6: Instance of 'Graph' has no 'adjacent' member

PS:igraph私のPYTHONPATHにあります

4

1 に答える 1

1

コンパイルされたC拡張機能の場合、ソースコードを分析できないため、Pylintができることはほとんどありません。インタラクティブシェルでigraph.Graph.are_connectedを印刷できますか?そうでない場合は、ライブラリがインスタンス化時に奇妙なことを実行するか、メソッドがイントロスペクトされていることを意味します。

いずれにせよ、これはpylintにとって難しい問題です。

http://www.logilab.org/ticket/73978 (最近開発ツリーに含まれている)で提供されているパッチを使用するか、インラインディレクティブを使用してE1101を無視することができます。

于 2011-08-30T09:50:23.600 に答える