私は現在pylintで作業しています.1つのファイルをリイントするとエラーが表示されます(以下のrepro)。私はazure sdkを使用していますが、それは私が参照しているパッケージであり、重要ではないはずです。このスクリプトファイルを実行なぜpylintはこのパッケージのモジュールを見つけることができませんか?
はリプロ
$ mkdir pylinttesting && cd pylinttesting
$ python3 -m venv venv
$ . venv/bin/activate
$ pip3 install azure==2.0.0rc6
$ echo 'from azure import mgmt' > app.py
何ら問題は生じない(python3 app.py
)
pylint出力
これは完全に有効であり、実行/エラーなしの輸入は、pylintはまだそれについて不平を言うにもかかわらず。以下の関連出力(簡略化のために省略)...
E: 1, 0: No name 'mgmt' in module 'azure' (no-name-in-module)
External dependencies
---------------------
::
azure (app)
しかし、私は...(同じ仮想環境で)
import os
import pkgutil
import azure
package_path = os.path.dirname(azure.__file__)
[print(name) for _, name, _ in pkgutil.iter_modules([package_path])]
をこの小さなスニペットを実行している場合...私はazure
にmgmt
モジュール命だから、明らかに...
batch
common
mgmt
servicebus
servicemanagement
storage
を次の出力を得ますパッケージ。しかし、私はピリンがなぜそれを選んでいないのだろうと思っていますか?
from azure import common
(共通はパッケージ内の別のモジュール)を実行すると、pylintはエラーをスローしません。
パッケージ内のこのmgmt
モジュールでpylintがなぜ不満なのでしょうか?
EDIT:pylintのバージョン情報...
pylint 1.6.5,
astroid 1.4.9
Python 3.6.0 (default, Dec 24 2016, 00:01:50)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
私は質問にpylintのバージョン情報を追加しました。だからここに「回避策」はありませんか?私はこのルールを無視することができたと思う..?または、私はgithubからこれをサポートしている明らかなブランチを得るためにクローンを作成できますか?私はそれが正しい場合、私の選択肢のように見えますか?ご回答有難うございます! –
@ThomasStringerはい、それは問題です.PylintはPythonコードを実行しないので、フードの下で何が起こっているのかを知る機会はありません。この構造の理解は、Pylintのコードで明示的に実装する必要がありました。この機能は準備が整いましたが、まだ出荷されていないようです。私たちはできるだけ早く1.7.0を出荷する予定ですが、それを望むならリポジトリのマスターブランチから 'pylint'と' astroid'を使う必要があります。 –
パーフェクト! pylint 1.7と小惑星1.5は魅力的に働いた!ありがとう! –