VSCodeでPythonを開発する際、コードの書き方や潜在的なミスを自動的にチェックしたい場合に便利なのが「Flake8」です。
Flake8を利用すると、未使用のimport、未定義の変数、空白やインデントの問題、1行が長すぎるコードなどを検出できます。
現在のVSCodeでは、以前使われていたpython.linting.flake8Enabledなどの設定ではなく、Microsoftが提供しているFlake8専用拡張機能を利用する方法が基本です。
ここでは、VSCodeにFlake8を導入する方法から、仮想環境との連携、.flake8による設定、うまく動作しない場合の対処法まで詳しく解説します。
Flake8とは
PythonコードをチェックするLinter
Flake8は、Pythonコードを静的に解析するLinterの一つです。
プログラムを実行しなくてもコードを解析し、問題がある部分を検出できます。
代表的には、次のような問題をチェックできます。
- 未使用のimport
- 未定義の変数
- 不適切な空白
- インデントの問題
- 1行の文字数超過
- PEP 8に関連するスタイル違反
たとえば、次のようなコードがあったとします。
import os
name="Taro"
print(message)
Flake8を実行すると、環境やバージョンによって多少異なりますが、次のような問題を検出できます。
F401 'os' imported but unused
E225 missing whitespace around operator
F821 undefined name 'message'
VSCodeと組み合わせれば、問題のあるコードに波線を表示したり、「Problems」パネルにエラーを一覧表示したりできます。
Flake8は自動整形ツールではない
Flake8はコードをチェックするためのLinterです。
基本的には、検出した問題を自動的に修正するFormatterではありません。
コードを自動整形したい場合は、Blackやautopep8、Ruff formatterなどを組み合わせて使用します。
役割を簡単に整理すると、次のようになります。
Flake8
→ コードの問題を検出する
Blackなど
→ コードを自動整形する
そのため、実務ではFlake8とFormatterを併用することもあります。
VSCodeにFlake8を導入する方法
Python拡張機能をインストールする
まずはVSCodeにMicrosoftのPython拡張機能をインストールします。
VSCode左側の「Extensions」をクリックします。
WindowsやLinuxでは、次のショートカットでも拡張機能画面を開けます。
Ctrl + Shift + X
検索欄に、
Python
と入力します。
Microsoftが提供しているPython拡張機能を選択して、「Install」をクリックします。
拡張機能IDは次のとおりです。
ms-python.python
Python拡張機能は、Pythonインタープリターの選択やデバッグ、補完など、VSCodeでPythonを開発するときの基本機能を提供します。
Flake8拡張機能をインストールする
続いてFlake8専用拡張機能をインストールします。
Extensions画面で、
Flake8
と検索します。
Microsoftが提供しているFlake8拡張機能を選択してください。
拡張機能IDは次のとおりです。
ms-python.flake8
「Install」をクリックすればインストールできます。
現在のVSCodeでは、Python拡張機能内の旧Lint設定を使うのではなく、このFlake8専用拡張機能を利用する方法が基本です。
参考サイト
【初心者向け】Visual Studio Code へ flake8 を導入する #VSCode – Qiita
Flake8をpipでインストールする方法
必ずpipでインストールする必要があるわけではない
MicrosoftのFlake8拡張機能にはFlake8本体が同梱されています。
そのため、単純にVSCode上でLintを行うだけであれば、必ずしも、
pip install flake8
を実行する必要はありません。
Flake8拡張機能をインストールするだけでも利用できます。
ただし、プロジェクトごとにFlake8のバージョンを管理したい場合や、Flake8用のプラグインを利用したい場合は、仮想環境へFlake8をインストールする方法がおすすめです。
Flake8をインストールする
VSCodeでターミナルを開きます。
メニューから、
Terminal
↓
New Terminal
を選択してください。
ターミナルで次のコマンドを実行します。
python -m pip install flake8
環境によっては、
python3 -m pip install flake8
を使用します。
インストール後は、次のコマンドで確認できます。
python -m flake8 --version
ただし、このコマンドで確認できるのは、そのPython環境へFlake8をインストールしている場合です。
VSCode拡張機能に同梱されているFlake8だけを利用している場合は、python -m flake8を実行できるとは限りません。
仮想環境にFlake8をインストールする方法
仮想環境を作成する
Python開発では、プロジェクトごとに仮想環境を用意すると依存パッケージを管理しやすくなります。
プロジェクトフォルダで次のコマンドを実行します。
python -m venv .venv
.venvという仮想環境が作成されます。
Windowsで仮想環境を有効化する
Windowsの場合は、次のように実行します。
.venv\Scripts\activate
PowerShellを使用している場合は、環境によってスクリプト実行ポリシーの設定が必要になることがあります。
macOSやLinuxで仮想環境を有効化する
macOSやLinuxでは、次のコマンドを使用します。
source .venv/bin/activate
仮想環境を有効化したら、Flake8をインストールします。
python -m pip install flake8
これでプロジェクト専用のFlake8環境を用意できます。
VSCodeでPythonインタープリターを選択する
Python: Select Interpreterを使用する
仮想環境を利用する場合は、VSCode側でも正しいPythonインタープリターを選択しておくことが重要です。
コマンドパレットを開きます。
Ctrl + Shift + P
続いて、
Python: Select Interpreter
と入力してください。
作成した.venvのPythonを選択します。
Windowsであれば、次のようなパスになります。
.venv\Scripts\python.exe
macOSやLinuxでは、次のようなパスになります。
.venv/bin/python
Flake8拡張機能のflake8.interpreterを別途指定していない場合、基本的にはVSCodeで選択しているPython環境が利用されます。
VSCodeでプロジェクトのFlake8を使う方法
flake8.importStrategyを設定する
MicrosoftのFlake8拡張機能には、どのFlake8を利用するかを指定するflake8.importStrategyという設定があります。
主な値は次の2つです。
useBundled
fromEnvironment
useBundledでは、Flake8拡張機能に同梱されているFlake8を利用します。
fromEnvironmentでは、選択されているPython環境にインストールされたFlake8を利用しようとします。
プロジェクトの仮想環境へインストールしたFlake8を使いたい場合は、.vscode/settings.jsonへ次のように設定します。
{
"flake8.importStrategy": "fromEnvironment"
}
選択した環境に利用可能なFlake8が見つからない場合は、バンドル版が利用されることがあります。
プロジェクトごとにFlake8のバージョンを固定したい場合は、仮想環境へFlake8をインストールしたうえでfromEnvironmentを設定すると管理しやすくなります。
flake8.enabledを設定する
Flake8拡張機能のLint機能は、基本的にはデフォルトで有効です。
明示的に設定したい場合は、次のように記述できます。
{
"flake8.enabled": true
}
Flake8を一時的に無効化する場合は、次のようにします。
{
"flake8.enabled": false
}
通常はtrueをわざわざ記述する必要はありません。
.flake8ファイルで設定する方法
プロジェクト直下に.flake8を作成する
Flake8の設定をプロジェクト単位で管理する場合は、.flake8ファイルを利用すると便利です。
たとえば、次のような構成にします。
my-project/
├─ .flake8
├─ .venv/
├─ app.py
├─ main.py
└─ requirements.txt
.flake8には、次のような設定を記述できます。
[flake8]
max-line-length = 88
exclude =
.git,
.venv,
__pycache__,
build,
dist
このように設定すれば、1行の最大文字数やLint対象から除外するフォルダをまとめて管理できます。
1行の最大文字数を変更する
Flake8では、設定によって長すぎる行をE501として検出できます。
1行の最大文字数を88文字にしたい場合は、次のように設定します。
[flake8]
max-line-length = 88
プロジェクトによっては、
max-line-length = 100
や、
max-line-length = 120
とすることもあります。
チームのコーディング規約やFormatterの設定と揃えておくと管理しやすくなります。
特定のエラーを無視する
特定のFlake8エラーを除外したい場合は、ignoreやextend-ignoreを使用できます。
たとえば、次のように記述します。
[flake8]
extend-ignore =
E203
複数指定することもできます。
[flake8]
extend-ignore =
E203,
W503
ただし、不要なエラーまで大量に無視するとLintの意味が薄れてしまいます。
実際に必要なルールだけを除外することが重要です。
特定のフォルダを除外する
仮想環境やビルドファイルまでチェックすると、不要なエラーが大量に表示されることがあります。
その場合はexcludeを使用します。
[flake8]
exclude =
.git,
.venv,
venv,
__pycache__,
build,
dist
これにより、指定したフォルダをFlake8のチェック対象から除外できます。
settings.jsonでFlake8を設定する方法
flake8.argsを使用する
VSCode側からFlake8へコマンドライン引数を渡したい場合は、flake8.argsを使用できます。
たとえば、1行の最大文字数を88文字にする場合は次のようにします。
{
"flake8.args": [
"--max-line-length=88"
]
}
複数のオプションを指定する場合は、それぞれ別の文字列として記述します。
{
"flake8.args": [
"--max-line-length=88",
"--extend-ignore=E203"
]
}
ただし、チーム開発やCIでも同じルールを利用したい場合は、VSCode固有のsettings.jsonだけに設定を書くより、.flake8などFlake8本体の設定ファイルへ記述するほうが管理しやすいでしょう。
flake8.pathで実行方法を指定する
Flake8拡張機能では、flake8.pathを使って実行するFlake8を指定することもできます。
たとえば、次のように設定できます。
{
"flake8.path": [
"${interpreter}",
"-m",
"flake8"
]
}
選択中のPythonインタープリターを使って、python -m flake8に相当する形で実行させたい場合などに利用できます。
通常のプロジェクトでは、まずflake8.importStrategyを使う構成で十分です。
flake8.ignorePatternsとexcludeの違い
flake8.ignorePatternsはVSCode拡張機能側の設定
VSCodeのFlake8拡張機能には、flake8.ignorePatternsという設定があります。
たとえば、次のように指定できます。
{
"flake8.ignorePatterns": [
"**/site-packages/**/*.py"
]
}
これはVSCodeのFlake8拡張機能側で除外するための設定です。
excludeはFlake8本体側の設定
一方、.flake8に書く、
[flake8]
exclude =
.venv,
build,
dist
は、Flake8本体側の設定です。
整理すると次のようになります。
flake8.ignorePatterns
→ VSCode拡張機能側
exclude
→ Flake8本体側
CLIやCIでも同じ除外ルールを使用したい場合は、.flake8側へexcludeを書く方法が分かりやすいでしょう。
pyproject.tomlを使う場合の注意点
Flake8では標準設定ファイルとして扱われない場合がある
Pythonでは、ツール設定をpyproject.tomlへまとめるプロジェクトが増えています。
しかし、Flake8本体では一般的に次のファイルが設定ファイルとして利用されます。
.flake8
setup.cfg
tox.ini
そのため、単純に、
[tool.flake8]
max-line-length = 88
と記述すれば、標準のFlake8が必ずその設定を読み込むと考えないほうが安全です。
pyproject.tomlでFlake8の設定を管理したい場合は、対応する追加ツールやプラグインを利用する方法があります。
初心者の場合は、まず.flake8を使用すると分かりやすいでしょう。
Flake8が正常に動作しているか確認する方法
意図的にエラーのあるPythonコードを書く
次のようなPythonファイルを作成します。
import os
name="Taro"
print(name)
正常にFlake8が動作していれば、未使用のimportや演算子周辺の空白などに関する指摘が表示されます。
たとえば、次のようなエラーです。
F401 'os' imported but unused
E225 missing whitespace around operator
VSCodeでは、問題のある場所に波線が表示されます。
Problemsパネルを確認する
Flake8の診断結果は「Problems」パネルから一覧表示できます。
WindowsやLinuxでは、次のショートカットを使用できます。
Ctrl + Shift + M
エラーコードや対象ファイル、行番号などを確認できます。
Flake8の代表的なエラーコード
E系のエラー
Eから始まるコードは、主にPEP 8に関連するスタイル上の問題です。
代表例としては、
E225
E501
などがあります。
W系の警告
Wから始まるコードは警告を表します。
空白や改行など、コーディングスタイルに関連する指摘が含まれます。
F系のエラー
Fから始まるコードは、主にPyflakes由来の問題です。
たとえば、
F401
は未使用のimportに関連します。
F821
は未定義の名前に関連します。
単なるスタイル違反だけでなく、コードの不具合につながる問題を検出できるのがFlake8のメリットです。
Flake8が動かない場合の対処法
Flake8拡張機能が有効か確認する
まず、MicrosoftのFlake8拡張機能がインストールされ、有効になっているか確認します。
Extensions画面で、
ms-python.flake8
を確認してください。
無効になっている場合は有効化します。
Pythonインタープリターを確認する
仮想環境のFlake8を使用している場合は、VSCodeが正しいPython環境を選択しているか確認します。
Ctrl + Shift + P
↓
Python: Select Interpreter
から、使用する.venvを選択してください。
仮想環境にFlake8が入っているか確認する
fromEnvironmentを利用している場合は、選択しているPython環境へFlake8がインストールされているか確認します。
python -m pip show flake8
インストールされていない場合は、次のコマンドを実行します。
python -m pip install flake8
Flake8のログを確認する
それでも正常に動作しない場合は、VSCodeのFlake8ログを確認します。
OutputやLanguage StatusなどからFlake8関連のログを開くと、実行時のエラーを確認できます。
さらに詳しいログが必要な場合は、次の設定を利用する方法もあります。
{
"flake8.trace.server": "verbose"
}
トラブルシューティングが終了したら、必要に応じて元へ戻しましょう。
Flake8とBlackを併用する方法
Flake8とBlackは役割が異なる
Flake8とBlackは競合するツールではなく、役割が異なります。
Flake8はコードをチェックします。
Blackはコードを自動整形します。
そのため、次のように組み合わせて利用できます。
コードを書く
↓
Blackで自動整形
↓
Flake8で問題をチェック
Blackでは1行の長さとして88文字がよく利用されるため、Flake8側も、
[flake8]
max-line-length = 88
として揃える方法があります。
ただし、特定のエラーコードを無視する設定については、利用しているFlake8やBlackなどのバージョン、プロジェクトのルールに合わせて調整することが大切です。
VSCodeでFlake8を設定するときのおすすめ構成
プロジェクト構成
たとえば、次のような構成にすると管理しやすくなります。
my-project/
├─ .vscode/
│ └─ settings.json
├─ .venv/
├─ .flake8
├─ src/
│ └─ main.py
└─ requirements.txt
settings.jsonの例
.vscode/settings.jsonには、次のように設定します。
{
"flake8.enabled": true,
"flake8.importStrategy": "fromEnvironment"
}
flake8.enabledはデフォルトでも有効なため、省略しても構いません。
.flake8の例
プロジェクト直下の.flake8には、次のように記述します。
[flake8]
max-line-length = 88
exclude =
.git,
.venv,
__pycache__,
build,
dist
そして仮想環境へFlake8をインストールします。
python -m pip install flake8
この構成であれば、VSCodeだけでなくCLIでも、
python -m flake8 .
と実行できます。
VSCodeとCIで同じ設定を共有しやすくなるため、実務でも扱いやすい構成です。
古いFlake8設定には注意する
python.linting.flake8Enabledは現在の基本設定ではない
古いWeb記事では、次のような設定を見かけることがあります。
{
"python.linting.flake8Enabled": true
}
以前はPython拡張機能からFlake8を有効化する方式が使われていました。
現在はFlake8が専用拡張機能として分離されているため、基本的にはMicrosoftのFlake8拡張機能をインストールして利用します。
古い記事を参考にすると設定が反映されない場合があるため注意しましょう。
VSCodeでFlake8を設定する手順まとめ
VSCodeでFlake8を導入する場合は、次の流れで設定すると分かりやすいでしょう。
1. VSCodeへMicrosoftのPython拡張機能をインストール
↓
2. MicrosoftのFlake8拡張機能をインストール
↓
3. 必要に応じて.venvを作成
↓
4. 仮想環境へFlake8をインストール
↓
5. Python: Select Interpreterで.venvを選択
↓
6. flake8.importStrategyをfromEnvironmentに設定
↓
7. プロジェクト直下に.flake8を作成
↓
8. Pythonファイルを編集してProblemsパネルを確認
最小限の設定で始める場合は、.vscode/settings.jsonを、
{
"flake8.importStrategy": "fromEnvironment"
}
とし、.flake8を、
[flake8]
max-line-length = 88
exclude =
.git,
.venv,
__pycache__,
build,
dist
としておけば十分です。
Flake8を導入することで、単純なスタイル違反だけでなく、未使用のimportや未定義変数なども早い段階で発見しやすくなります。
特にチーム開発では、.flake8にルールをまとめておくことで、VSCode、CLI、CIなど複数の環境でチェック基準を統一しやすくなります。
以上、VSCodeでFlake8を設定する方法についてでした。
最後までお読みいただき、ありがとうございました。









