29

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

F| Unable to import '_winreg'   

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

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

前もってありがとう、オズ

編集:

ドキュメントには次のように記載されています。

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

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

部分的な解決策:

pylint --disable=F0401 <filename>

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

4

5 に答える 5

10

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

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

于 2012-03-08T11:21:25.097 に答える
8

モジュールを本当に無視したい人のために、pylint 用の小さなパッチをここに置きます。

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ファイルを介してパッチを適用するのが最適です。

于 2012-03-08T10:43:04.213 に答える
0

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

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

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

CONFIG = 'Unix'


if CONFIG == 'Unix':
    import  UnixLib
elif CONFIG == 'Win':
    import  WinLib
else:
   assert False
于 2012-03-07T14:00:30.793 に答える