Python

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 + ,を押して設定を開いて、ワークスペースを選択する。

設定の検索で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で怒られる場合がある

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

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