Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Pythonの環境構築について

 Pythonの環境構築について

Avatar for 株式会社Curious Vehicle

株式会社Curious Vehicle

February 21, 2025
Tweet

Transcript

  1. 名前 種別 用途 flake8 リンター PEP8というコーディングガイドに基づいて注意をしてくれる mypy リンター メソッドとかに型ヒントを書いてないと注意してくれる。 静的型チェックてやつができる

    black フォーマッター PEP8に基づいてフォーマットしてくれる isort フォーマッター import 文を標準、外部、ローカルライブラリの3段階に自動で 分けてabc順に並べてくれるやつ これらは全部 pipとかpoetry addでインストールできます そこは簡単、便利!だけど。。
  2. 名前 わかりづらポイント ファイル名 設定の書き方 flake8 - 1行の文字数がデフォルト79文字 - これだけpyproject.tomlに対応していな い

    .flake8 [flake8] exclude = .git, .gitignore, __pycache__, .venv, .env max-line-length = 119 extend-ignore = mypy 設定ファイルでstrict=trueにしないと 型ヒントを書かなくても警告してくれない のであんまり意味がない pyproject.toml [tool.mypy] strict = true black デフォルトの1行の文字数が88文字 なのでflake8と競合する pyproject.toml [tool.black] line-length = 119 isort デフォルトの1行の文字数はflake8と同じ く79文字 blackと競合する。そしてプロパティの書き 方がblackと合わせます〜みたいな感じ でさらに混乱 pyproject.toml [tool.isort] profile = "black"
  3. VSCode拡張 flake8 black isort mypy VSCode flake8 black isort mypy

    があらかじめ入ってる 拡張をインストールするこ とで有効になる Pythonファイル python環境 flake8 black isort mypy このことを知らないと VSCodeでflake8拡張をvscodeにレコメン ドされた時に「 pipで入れたやつ使ってくれ ないの?」と悩むことになる いま python環境に インストール不要になった!
  4. settings.json { "[python]": { // 保存したときにフォーマットする "editor.formatOnSave": true, // デフォルトフォーマッターの設定

    "editor.defaultFormatter": "charliermarsh.ruff", "editor.codeActionsOnSave": { //always->保存されたときにアクションを実行 "source.organizeImports.ruff": "always", // explicit->保存、ウインドウ変更、フォーカス変更時にアクションを実行。 "source.fixAll.ruff": "explicit", } }, "ruff.format.args": [ "--config=${workspaceFolder}/pyproject.toml" ], "mypy-type-checker.args" :["--config-file=${workspaceFolder}/pyproject.toml"] }
  5. pyproject.toml[tool.ruff] target-version = "py312" # pythonのバージョン line-length = 119 #

    1行の文字数 indent-width = 4 # インデントサイズ # blackformatの設定 [tool.ruff.format] quote-style = "double" docstring-code-format = true [tool.ruff.lint] # 実は.venvはデフォルトで有効になってるから設定不要 ignore = [".venv/", ] select = [ "F", # Flake8 "I", # isort "E", # error "W" # warning ] [tool.mypy] strict = true