【Python】VSCodeでLinterとFormatterが効かないときの対処方法

VSCodeの拡張機能としてFlake8autopep8を導入したのですが、動作しませんでした。

今回はFlake8とautopep8が動作しなかった時の解決方法をお伝えします。

結論から言うと、LinterとFormatterが動作しなかった原因は仮想環境で使用したからでした。仮想環境をサブディレクトリに作成することで解決しました。

はじめに

仮想環境でPythonのコードを書いているときに、Microsoft公式のFlake8autopep8を導入しましたが動作しないという問題が発生しました。

解決したので解決方法をお伝えします。

環境はWindows 11 Enterprise 24H2でPythonのバージョンは3.12.7です。

問題

「venv」で仮想環境を作成してから、VSCodeの拡張機能としてFlake8とautopep8を追加しました。

追加後にVSCodeのワークスペース設定で以下のように設定をしたのですが、動作しませんでした。

Pylintの無効化
Default Formatterをautopep8に変更
Format On Saveにチェック

VSCodeの右下の{ }をクリックすると、ログが表示されるので確認してみました。


対象のファイルのログには“Skipping standard library file”と記載されていました。

仮想環境内のプロジェクトのソースコードが標準ライブラリの一部であると思われてしまい、フォーマッターの機能がスキップされたみたいです。

解決方法

フォーマッターが動作しないときは、以下のようなディレクトリ構成にしていました。

Libフォルダとpyvenv.cfgが存在するディレクトリにPythonのファイルを追加していました。この配置では動作しないみたいです。

動作しない時のディレクトリ構成

Pythonのファイルが仮想環境内にあることがダメらしく、Libフォルダとpyvenv.cfgが同じディレクトに存在するとフォーマッターが効かないようです。

解決策としては、以下のコマンドで仮想環境を独自のサブディレクトリに作成することです。

cd my_project
py -m venv my_venv

ディレクトリ構成は以下のようになります。

my_project
|- my_venv
| |- include/
| |- Lib/
| |- Scripts/
| |- pyvenv.cfg
|- src
| |- main.py

プロジェクトフォルダ内のmy_venvフォルダ内にLibフォルダとpyvenv.cfgが存在する構成に変更して、別のsrcフォルダ内にPythonのソースファイルを入れました。

動作成功時のディレクトリ構成

このディレクトリ構成でPythonファイルをVSCodeで開くと、無事にFlake8とautopep8が動作しました。

おわりに

Flake8とautopep8がVSCodeの拡張機能で簡単に導入できると聞いて試してみましたが、動作しなかったので苦労しました

フォーマッターが動作しないという人は仮想環境のせいで効かないのかもしれないので、試してみてください。

参考

stack overflow: Python File not formating in VSCode due to it being skipped by formatter

VSCodeでPythonのLinter/Formatterの拡張機能が出たらしい

【初心者向け】Visual Studio Code へ flake8 を導入する