web-dev-qa-db-ja.com

特定のインポートを無視するようにpylintに指示する方法

Pythonを使用してWindows用のソフトウェアを開発しています。私はLinuxで開発しており、Pylintを使用してコードをチェックしています。私はエラーを取り除くことができません:

F| Unable to import '_winreg'   

これは明らかです-Pythonにはこのモジュールがありません。

それで、このエラーを無視するには、.pylintrcに何を入れなければなりませんか?

よろしくお願いします、オズ

編集:

ドキュメントによると:

:F0401: *Unable to import %r*
  Used when pylint has been unable to import a module.

今、私はそれを使用する方法を見つける必要があります...

部分的な解決策:

pylint --disable=F0401 <filename>

私はまだ.pylintrcを介して行う方法を探しています。

20
Oz123

モジュールを本当に無視したい人のために、私はここにpylintの小さなパッチを置いています: '/ pylint/checkers/imports.py'に

262     def get_imported_module(self, modnode, importnode, modname):
+263         import sys
+264         ignoreModules = ['_winreg', 'your', 'bogus','module','name']
265         try:        
+266             if sys.platform =='linux2' and modname not in ignoreModules:
267                 return importnode.do_import_module(modname)
268         except astng.InferenceError, ex:
269             if str(ex) != modname:
270                 args = '%r (%s)' % (modname, ex)

この小さなハックは、すべての警告を無視するよりもうまく機能します。できれば、時間があれば、.pylintrcファイル。

8
Oz123

次のコードでこれにも遭遇します:

 8: if os.name == 'nt':
 9:    import msvcrt
10: else:
11:    import fcntl

pylintビルドに失敗しました このエラー:

E:  9, 4: Unable to import 'msvcrt' (import-error)

solution は、pylint0.10以降で使用できます。

 9:    import msvcrt  # pylint: disable=import-error
15

Pylintが取得できない可能性のある特別なモジュールがある職場で採用されているのを見たソリューション(Pythonが埋め込まれ、この特別なモジュールはメインの実行可能ファイル内にあり、pylintは通常のPythonインストール)は、.pyファイルを作成し、pylintの実行時にpythonパスに配置することでモックアップします( PyLint "Unable to import"エラーを参照) --PYTHONPATHの設定方法? )。

したがって、空の_winreg.pyを含む「pylint-fakes」ディレクトリがある可能性があります(または、インポートされた名前をチェックする必要がある場合は、空ではなく偽の変数を使用します)。

10
Chris Morgan

質問はかなり古いですが、今のところ、次のような.pylintrcのモジュールは無視できます。

ignored-modules=module1,module2,...

サードパーティのCIツールでアンインストール可能なモジュールのチェックを抑制するために使用しましたが、問題なく動作します。

9
a5kin

[編集:pylintチェックファイルの変更が要求されているため、これは望ましい解決策ではありませんが、コード自体を変更できる場合に備えて残しておきます。コメントの後にはできません]:

Importステートメントの周りにtry/exceptブロックを配置します。

またはさらに良い。何かのようなもの:

CONFIG = 'Unix'


if CONFIG == 'Unix':
    import  UnixLib
Elif CONFIG == 'Win':
    import  WinLib
else:
   assert False
0
Michel Keijzers