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 + ,
を押して設定を開いて、ワークスペースを選択する。
設定の検索でpython.formatting.providerを入力し、blackを選択する。
python.formatting.provider
ディレクトリに.vscode/settings.jsonファイルが作成され、以下のような記載がされる。
{ "python.formatting.provider": "black" }
続いてeditor.formatOnSaveを検索して、チェックをいれsaveされるときにフォーマットされるよう設定する。
pylintを無効にする
python.linting.pylintEnableを検索して、チェックを外して規定のLintのpylintを無効にする。
lintをflake8に設定する
python.linting.flake8Enabledを検索し、チェックを入れる。
1行の文字数を88文字に変更する
flake8の既存の設定では一行あたり79文字以上で怒られる。blackは一行あたり88文字で改行する設定なので、この文字数を合わせておくのが吉。
python.linting.flake8Argsを検索し、--max-line-lengthを88に設定する。
pythonインタープリターの設定
python.defaultInterpreterPathを検索し、作成した.venv以下のpythonを指定する。
すべて設定した後の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)
このように表示されるようになる。