20

Pylintでモジュールをチェックしています。プロジェクトの構造は次のとおりです。

/builder
    __init__.py
    entity.py
    product.py

製品内で、次のようにエンティティをインポートします。

from entity import Entity

しかし、ピリントはそれを嘆きます:

************* Module builder.product
W:  5,0: Relative import 'entity', should be 'builder.entity'

ただしfrom builder.entity import Entity、パッケージを認識せず、from ..builder.entity import Entityどちらも機能しません。ピリントは何について不平を言っていますか?ありがとう

4

4 に答える 4

19

Python 2.5では、相対インポートが導入されています。彼らはあなたがすることを可能にします

from .entity import Entity
于 2012-05-04T07:55:26.147 に答える
9

__init __。pyファイルにより、pylintはコードがパッケージ(つまり「ビルダー」)であると見なします。

したがって、pylintが「fromentity import Entity」を参照すると、暗黙の相対インポートとして適切に検出され(Python 2.6以降、他の投稿者が宣伝しているように、「。」を使用して明示的な相対インポートを実行できます)、報告します。

次に、「from builder.entity import Entity」が機能しない場合、それはPYTHONPATH pbです。「builder」ディレクトリを含むディレクトリがPYTHONPATHにあることを確認してください(gurney alexによって提案されている代替pb)。パッケージを作成するつもりがなかった場合を除いて、__init__。pyを削除するのがおそらく道のりです。

于 2012-05-09T10:57:15.427 に答える
0

product.pyの上部に次の行を含めると何が得られますか。

import builder
print builder

builder私の推測では、使用しているものの前にあるPYTHONPATHのどこかから別のモジュール/パッケージをインポートしていると思います。

于 2012-05-04T15:40:16.417 に答える
-1

新しいPythonバージョンを使用している場合、glglglの答えは正しいです。

ただし、そうでない場合は、検証しているパッケージがに含まれていることを確認する必要がありますPYTHONPATH。以下の例を参照してください。

[sebastian ~/tmp/testpy]$ pylint -r n a.py 
************* Module a
C:  1: Missing docstring
F:  1: Unable to import 'testpy.b'
[sebastian ~/tmp/testpy]$ PYTHONPATH=".." pylint -r n a.py 
************* Module a
C:  1: Missing docstring
于 2012-05-04T07:57:03.730 に答える