2012-03-07 28 views
9

私はPythonでWindows用のソフトウェアを開発しています。私はLinuxで開発しています。私は Pylintを使ってコードをチェックしています。 私はエラーを取り除くことはできません。pylintに特定のインポートを無視する方法を教えてください。

F| Unable to import '_winreg' 

これは明白です - Linux上でPythonはこのモジュールを持っていません。

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

おかげで、 オズ

EDIT:

ドキュメントは言う:

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

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

部分的な解決策:

pylint --disable=F0401 <filename> 

私はまだ.pylintrc経由でやる方法を探しています。

答えて

6

、私はここに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ファイルを使ってパッチを作成します。

+0

あなたはそのパッチを提出する時間を見つけたことがありますか? –

+0

いいえ、私がそれを投稿したとき、私はそれについて考えたことはありませんでした。 – Oz123

+0

pylint 1.5.0の次期リリースには、このようなパッチが含まれているようです。 –

0

[編集:pylintチェックファイルの変更が要求されているので、これが欲しかったソリューションではありませんが、コード自体はこれができないコメントの後、変更することができる場合には、私はそれを残す]:

入れimport文のtry/exceptブロック。

さらに良い。

本当にモジュールを無視したい人のために
CONFIG = 'Unix' 


if CONFIG == 'Unix': 
    import UnixLib 
elif CONFIG == 'Win': 
    import WinLib 
else: 
    assert False 
+4

- 私はそれを無視したいです。私のコードを変更しないでください。これはPythonのビルトインであるため、この場合にはうまくいきます。 – Oz123

9

私の職場では、Pylintが入手できない特別なモジュール(Pythonが組み込まれていて、この特別なモジュールはメインの実行可能ファイルの中にあります.pylintは通常のPythonのインストール)は、.pyファイルを作成し、pylintを実行しているときにpythonパスに置くことによってそれをモックすることです(PyLint "Unable to import" error - how to set PYTHONPATH?参照)。

したがって、_winreg.pyの空白(または読み込まれた名前を確認する必要がある場合は、空ではなく偽装された変数を含む)を含む「pylint-fakes」ディレクトリがあります。

+0

クリス、おかげさまで提案します。私は実際に私たちの職場に埋め込まれているモジュールについても同じことをしました。私のダミーモジュールには、実際のモジュールのすべてのメンバーが含まれています。これは有効な解決策でもあります。あなたはもちろんそれについての投票を得ます:-) – Oz123

6

ただ、次のコードでも、このに実行します。このエラーが発生して

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

pylintfailed the build

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

solutionpylint 0以降で使用可能です。10:

9: import msvcrt # pylint: disable=import-error 
関連する問題