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

poetry.tomlファイルは以下のようになる

poetry.toml

[virtualenvs]
in-project = true

tomlファイル作成

poetry init -n

pyproject.tomlファイルは以下のようになる

poetry.toml

[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で怒られる場合がある

.vscode/settings.json

{ 
  "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