delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

flake8、black、isort、mypyをVS Code上で使用する

これまでPythonの各種コードチェッカー・フォーマッターの使い方をみてきたので、次にVS Codeとの連携方法について書く。


過去の記事はこちら
kamatimaru.hatenablog.com
kamatimaru.hatenablog.com
kamatimaru.hatenablog.com

flake8

・Lint機能が有効になっていることを確認する。

Python › Linting: Enabled」にチェックが入っていることを確認する。

・デフォルトではPylintが有効になっているのでOFFにする。

Python › Linting: Pylint Enabled」のチェックを外す。

・flake8を有効にする。

Python › Linting: Flake8 Enabled」をチェックする。

・【少しハマったこと】「Linter flake8 is not installed.」が出る。

上記の設定後、確かにflake8をインストールしているはずなのに、VS Code上に「Linter flake8 is not installed.」が出た。

結論としては、

  • VS Codeは.venv配下の仮想環境のPythonパスを参照していた。
  • 仮想環境のPythonにはflake8をインストールしていなかった。

が原因だった。

こちらに関してはVS Codeの仕様が気になったので以下に別の記事を書いた。
kamatimaru.hatenablog.com


以上で設定完了

black

・デフォルトではフォーマッターがautopep8に設定されているのでblackに変更する。

Python › Formatting: Provider」のプルダウンを開いて、autopep8からblackに変更する。

・保存時の自動フォーマット機能を有効にする。

「Editor: Format On Save」をチェックする。

以上で設定完了

isort

公式ドキュメントを確認したところ、isortはデフォルトでVS Codeの標準のimport並び替え用のパッケージとして組み込まれているとのことであった。

(公式ドキュメントより引用)

Sort Imports uses the isort package to consolidate specific imports from the same module into a single import statement and to organize import statements in alphabetical order.

code.visualstudio.com

従って、isort自体をVS Codeに登録するということは必要ない。

但し、デフォルトでは保存時にisortが自動で実行されるように設定されていないので、設定する必要がある。

・保存時にisortが自動で実行されるように設定する

以下の手順で設定する。

1.「Editor: Code Actions On Save」を検索する。
f:id:kamatimaru:20200504220219p:plain

2. この項目に関してはjsonを直に編集する必要があるので、「settings.json で編集」を選択する。

3.「editor.codeActionsOnSave」を以下のように変更する。
[変更前]

"editor.codeActionsOnSave": null
}

[変更後]

"editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
}


isortをVS Codeで実行する方法については情報が少なかったが、以下の公式ドキュメント及びブログを参考にさせて頂いた。

code.visualstudio.com
medium.com

以上で設定完了

mypy

・mypyを有効にする。

Python › Linting: Mypy Enabled」をチェックする。

以上で設定完了

最後に

参考にさせて頂いた記事

qiita.com
blog.gepuro.net