Python開発環境設定

仕事でもだいたいPythonを使うので開発環境メモ。 主にVScodeの設定を記載。

前提条件

以下インストール済み

  • pyenv
  • poetry
    1
    2
    3
    4
    5
    6
    7
    
    $ poetry config --list
    cache-dir = "/home/piyota/.cache/pypoetry"
    experimental.new-installer = false
    installer.parallel = true
    virtualenvs.create = true
    virtualenvs.in-project = true
    virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/piyota/.cache/pypoetry/virtualenvs
    
  • VScode

VSCode拡張機能

ライブラリ

ライブラリ名 役割 備考
black フォーマッター
isort フォーマッター importのフォーマッター
flake8 リンター https://flake8.pycqa.org/en/latest/user/error-codes.html
mypy 静的チェッカー https://github.com/python/mypy
pep8-naming 命名規則チェッカー https://github.com/PyCQA/pep8-naming
  • mypyの静的チェックのイメージ
    1
    2
    
    number = input("What is your favourite number?")
    print("It is", number + 1)  # error: Unsupported operand types for + ("str" and "int")
    

セットアップ

  • ライブラリインストール

    1
    2
    3
    4
    5
    6
    7
    
    $ pyenv local 3.10.5    
    $ poetry init
    $ poetry shell
    $ poetry add -D black
    $ poetry add -D isort
    $ poetry add -D flake8
    $ poetry add -D mypy
    
  • setting.json

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    {
      "python.envFile": "${workspaceFolder}/.venv",
      "python.formatting.provider": "black",
      "python.linting.enabled": true,
      "python.linting.pylintEnabled": false,  // pylint は使わない
      "python.linting.pycodestyleEnabled": false, // pycodestyleは使わない
      "python.linting.flake8Enabled": true,
      "python.linting.flake8Args": [
          // エラーコード
          // https://pep8.readthedocs.io/en/latest/intro.html#error-codes
          "--max-line-length=110",
          "--ignore=E111, E114, E402, E501"
      ],
      "python.linting.lintOnSave": true,
      "python.linting.mypyEnabled": true,
      "python.languageServer": "Pylance",
      // 型アノテーション設定
      // basic: 型アノテーションがある部分が合っているか検出
      // strict: 型アノテーションがない場合も検出
      "python.analysis.typeCheckingMode": "strict", 
      // PEP8 エラーコードチェックシート
      // https://qiita.com/KuruwiC/items/8e12704e338e532eb34a
      "python.formatting.blackArgs": [
          "--line-length=110"
      ],
      "[python]": {
          "editor.tabSize": 4,
          "editor.formatOnSave": true,
          "editor.codeActionsOnSave": {
              "source.organizeImports": true
          }
      },
      // pytest設定
      "python.testing.pytestArgs": [
          "test"
      ],
      "python.testing.unittestEnabled": false,
      "python.testing.pytestEnabled": true
    }
    
  • launch.json

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    {
      // IntelliSense を使用して利用可能な属性を学べます。
      // 既存の属性の説明をホバーして表示します。
      // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
          {
              "name": "Python: 現在のファイル",
              "type": "python",
              "request": "launch",
              "program": "${file}",
              "console": "integratedTerminal",
              // 自身のコードのみデバッグするかどうか
              // falseの場合他のライブラリをデバッグ対象に含める
              "justMyCode": true
          }
      ]
    }
    
Built with Hugo
テーマ StackJimmy によって設計されています。