JavaScriptを有効にしてください

【Python】PylintのW0611 (unused-import) などのメッセージを抑制する

 ·   4 min read

はじめに

Pythonのコード分析ツールPylintから出力されるメッセージを抑制する方法について、W0611 (unused-import)警告を例に解説します。なお、Pylintのメッセージを抑制する方法には、スクリプト中にコメントとして記載する方法と設定ファイルを使う方法がありますが、この記事では前者のみ述べます。

この記事で検証した環境は以下の通りです。各ライブラリは既にインストールされているものとします。

  • OS: Windows 10 Home
  • Python 3.11.6
  • Pylint 3.0.2
  • Matplotlib 3.8.1
  • japanize_matplotlib 1.1.3

この記事はPython Advent Calendar 2023 (Qiita) 17日目の記事です。

Pylintによる警告の例

PylintはPythonのプログラムに対して様々な種類のメッセージを出力できますが、この記事ではW0611 (unused-import)という「パッケージをインポートしたが使っていない」という警告を例とします。この警告が出る場合、基本的にはインポート文をコメントアウトすべきですが、japanize_matplotlibのようにコメントアウトできないパッケージもあります。japanize_matplotlibとは、matplotlibで日本語を扱えるようにするパッケージです。以下のようにインポートするだけで日本語を表示できるので、何も対策をしなければ、PylintはW0611を表示してしまいます。

1
2
3
4
5
6
7
# -*- coding: utf-8 -*-
"""Pylintメッセージ抑制のテスト"""
import matplotlib.pyplot as plt
import japanize_matplotlib

plt.plot([1, 2, 3])
plt.xlabel("x軸")

次に、実際にPylintでW0611を表示させます。上記のスクリプトをtest.pyという名前で保存し、コマンドライン上でPylintに解析させます(Visual Studio CodeやSpyderなどでPylintを実行しても構いません)。

1
2
3
4
5
6
> pylint test.py
************* Module test
test.py:4:0: W0611: Unused import japanize_matplotlib (unused-import)

-----------------------------------
Your code has been rated at 7.50/10

このように、W0611が表示されました。

メッセージの抑制方法

次に、本題のPylintによるメッセージを抑制する方法を解説します。「はじめに」で述べたように、抑制する設定をスクリプト内にコメントとして記載します。コメントの書き方によって、抑制する範囲を以下の3つから選択できます。

  1. 行単位で抑制
  2. 複数行で抑制
  3. スコープ単位で抑制

行単位で抑制

行単位で抑制する場合、抑制したい行の最後に# pylint: disable=[抑制したいメッセージ、または番号]を追加します。W0611 (unused-import)の場合、以下のどちらかとなります。

1
import japanize_matplotlib # pylint: disable=unused-import
1
import japanize_matplotlib # pylint: disable=W0611

どちらにするかは好みですが、前者の方が抑制しているメッセージが分かりやすいと思います。

抑制するコメントの追加後、再度Pylintで解析します。

1
2
3
4
> pylint test.py

-------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 7.50/10, +2.50)

メッセージが表示されなくなったことを確認できました。

複数行で抑制

複数行で抑制する場合、以下2つのコメントで抑制したい範囲を囲みます。

  • # pylint: disable=[抑制したいメッセージ、または番号]
  • # pylint: enable=[抑制したいメッセージ、または番号]

以下に例を示します。

1
2
3
# pylint: disable=unused-import
import japanize_matplotlib 
# pylint: enable=unused-import

スコープ単位で抑制

クラスや関数の先頭に# pylint: disable=[...]を記述することで、そのスコープ内に限定してメッセージを抑制できます。ライブラリのインポートは例としてあまり適切ではないですが、イメージを以下に示します。

1
2
3
4
5
6
def test1():
    # pylint: disable=unused-import
    import japanize_matplotlib # この行はunused-import警告が出力されない

def test2():
    import japanize_matplotlib # この行はunused-import警告が出力される

(上記はあくまで例です。通常、関数の中でライブラリをインポートしません)

参考

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

サイト内検索