poetryで仮想環境を構築して、blackとflake8を入れる

poetryインストール

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

poetryでPythonのバージョンも変更したい場合はpyenvでlocal(作りたいプロジェクト内)のバージョンを変更しておく。

pyenv install 3.10.4
pyenv local 3.10.4
poetry config virtualenvs.in-project true --local
[virtualenvs] in-project = true

tomlファイル作成

poetry init -n
[tool.poetry] name = "onyourmarks" version = "0.1.0" description = "" authors = ["hy-sksem"] [tool.poetry.dependencies] python = "^3.10" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"

authors = ["hy-sksem"]の部分はメールアドレスなども記載されるので、適宜修正する。

仮想環境をアクティベートするのは以下。

poetry shell

コードフォーマッターとリンターを導入

コードフォーマッターは文字通り、コードを修正してくれる。リンターはソースコード上の問題点などを教えてくれる静的解析ツールである。両者を導入することで、コードの品質を一定以上に保つことができるので必ず入れる。

Blackインストール

poetry add black -D

flake8インストール

poetry add flake8 -D

VScodeの設定

ctrl + ,を押して設定を開いて、ワークスペースを選択する。

20220820-1.png

設定の検索でpython.formatting.providerを入力し、blackを選択する。

python.formatting.provider

20220820-2.png

ディレクトリに.vscode/settings.jsonファイルが作成され、以下のような記載がされる。

{ "python.formatting.provider": "black" }

続いてeditor.formatOnSaveを検索して、チェックをいれsaveされるときにフォーマットされるよう設定する。

pylintを無効にする

python.linting.pylintEnableを検索して、チェックを外して規定のLintのpylintを無効にする。

lintをflake8に設定する

python.linting.flake8Enabledを検索し、チェックを入れる。

20220820-3.png

1行の文字数を88文字に変更する

flake8の既存の設定では一行あたり79文字以上で怒られる。blackは一行あたり88文字で改行する設定なので、この文字数を合わせておくのが吉。

python.linting.flake8Argsを検索し、--max-line-lengthを88に設定する。

20220820-4.png

pythonインタープリターの設定

python.defaultInterpreterPathを検索し、作成した.venv以下のpythonを指定する。

20220820-5.png

すべて設定した後のsettings.json

うまく設定できなかった場合は、以下をコピペして貼り付けてもよい。pythonインタープリターが正しく指定できていないと、blackやflake8がインストールされていないとvscodeで怒られる場合がある

{ "files.autoSave": "onFocusChange", "python.formatting.provider": "black", "editor.formatOnSave": true, "python.linting.flake8Enabled": true, "python.linting.flake8Args": [ "--max-line-length", "88" ], "python.defaultInterpreterPath": "api/.venv/bin/python3", }

バッチの設定

README.mdにcode styleがblackであることがわかるようにバッチを設定する。以下のように記載する。

[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

このように表示されるようになる。

20220820-7.png