🐍

チーム開発向け Windows, VSCode, pyenv, pipenv, flake8, pylint, black設定方法

2021/06/04に公開

ガチなチーム開発向けに、本気出してVSCode Windowsにpyenv経由でPythonランタイムをインストールしてpipenvでプロジェクトを構成、Linterとフォーマッターもちゃんと動くようにする手順。

事前準備

VSCodeのインストール

  1. VSCodeをインストールする

    https://azure.microsoft.com/ja-jp/products/visual-studio-code/

Git for Windowsのインストール

  1. Git for Windowsをインストールする

    https://gitforwindows.org/

既存のPythonランタイムの削除

  1. PythonをすでにWindowsにインストールしている場合は、削除する

Windowsに設定されているpython用のアプリの実行エイリアスを無効化する

  1. 「Windowsのメニュー」 -> 「設定」 -> 「アプリ」 -> 「アプリと機能」を開く
  2. 「アプリ実行エイリアス」をクリックする
  3. 「アプリインストーラ python.exe」 を 「オフ」にする
  4. 「アプリインストーラ python3.exe」 を 「オフ」にする

pyenv-winの導入設定

pyenv-win を導入する

  1. Powershellで下記コマンド実行する
    git clone https://github.com/pyenv-win/pyenv-win.git "$HOME/.pyenv"
    
    参考: https://github.com/pyenv-win/pyenv-win

pyenv-win用の環境変数を設定する

  1. PowerShellで下記コマンドを実行する
    [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
    [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
    [System.Environment]::SetEnvironmentVariable('path', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"User")
    

pyenvの導入確認

  1. 新しくPowerShellを開き、下記コマンドを実行できることを確認する(VSCode内のPowerShellを使う場合は、事前にVSCodeを再起動させる)
    pyenv --version
    pyenv rehash
    pyenv
    

pythonランタイムの導入

プロジェクト用のフォルダを作成する

  1. 任意の場所にプロジェクトで使うフォルダを作成する

Python をインストールする

  1. PowerShellを開きプロジェクト用フォルダに移動する
  2. PowerShellで下記コマンドを実行する
    pyenv install --list
    
  3. 実行環境(AWS Lambdaなど)がサポートするPythonのバージョンを確認する。サポートするバージョンで一番新しいPythonランタイムをインストールする
    pyenv install 3.8.9
    pyenv local 3.8.9
    pyenv rehash
    
  4. PowerShellで下記コマンドを実行し、Pythonのバージョンが表示されることを確認する
    python --version
    
    Python 3.8.9
    

VSCodeの設定1

VSCode拡張の導入

  1. 下記VSCode Extentionを導入する
    • editorconfig.editorconfig
    • ms-python.python
    • ms-python.vscode-pylance
    • visualstudioexptteam.vscodeintellicode

Editor Configの設定

  1. プロジェクトフォルダ直下に、.editorconfigファイルを作成する(改行はLFにする)
  2. .editorsconfigファイルを開き、下記の内容をコピペして保存する。
    root = true
    
    [*]
    indent_style = space
    indent_size  = 4
    end_of_line  = lf
    charset = utf-8
    trim_trailing_whitespace = true
    insert_final_newline = true
    [*.json]
    indent_size  = 2
    

(補足)すべてのファイル([])にindent_styleなどの設定をする。json([.json])だけ、indet_size は 2にして、他の設定は、すべてのファイル([*])に従う。

pipenvの導入と設定

pipenvをインストールする

  1. PowerShellで下記コマンドを実行する
    python -m pip install --upgrade pip
    pip install pipenv
    pyenv rehash
    

pipenvの仮想環境をプロジェクト用ディレクトリに作成するよう環境変数を設定する

  1. PowerShellで下記コマンドを実行する
    [System.Environment]::SetEnvironmentVariable('PIPENV_VENV_IN_PROJECT',"true","User")
    

pipenv仮想環境を作成する

  1. PowerShellで下記コマンドを実行する

    pipenv --python 3.8
    

    ※pyenvで導入済みのpythonのバージョンを指定する必要がある

VSCodeの設定2

VSCodeの設定用に settings.json を作成する

  1. プロジェクト用フォルダ内に.vscode ディレクトリを作成する
  2. .vscode 内に settings.json ファイルを作成する
    settings.jsonを下記のようにして保存する
    {
    
    }
    

VSCodeのPythonインタープリターの設定をする

  1. settings.jsonに下記内容を追加する

    "python.pythonPath": "${workspaceFolder}/.venv/Scripts/python.exe",
    "python.analysis.completeFunctionParens": true,
    

VSCodeを再起動させてPythonのインタープリターを認識させる

  1. VSCodeを一度終了、再起動させる
  2. VSCode左下のメニューに Python 3.8.9 64-bit ('.venv': pipenv)のように表示され、pythonインタープリターが認識されていることを確認する

フォーマッターとLinterの導入、設定

Black(フォーマッター)の導入

  1. PowerShellで下記コマンドを実行する

    pipenv install --dev black --pre
    
  2. settings.jsonに下記エントリを追加

    "python.formatting.provider": "black",
    "python.autoComplete.addBrackets": true,
    

flake8の導入

  1. PowerShellで下記コマンドを実行する

    pipenv install --dev flake8
    
  2. settings.jsonに下記エントリを追加

    "python.linting.enabled": true,
    "python.linting.pylintEnabled": false,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--max-line-length",
        "90",
    ],
    

    Blackは、デフォルトで1行88文字で改行するのでコメントアウト分多めの1行90文字を超えたら警告するように設定する(デフォルト80文字)

    ※pythonファイルを編集、保存した際、「blackが見つかりません」や「flake8が見つかりません」と出る場合は、「Ctrl」 + 「Shif」 + 「p」 -> 「Python: Select Interpriter」 を選択。「Current: .\venv\Scripts\python.exe」 になっているか確認してください。なっていない場合は、「Enter interpreter path...」を選択して上記パスをにあるpython.exeを選択してください。

  3. PowerShellで下記コマンドを実行する

    pipenv install --dev pylint
    

    せっかくだから、入れておく

(参考)pylintを普段のLinterとして使う場合

  1. settings.jsonのエントリを下記のように設定する

    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.linting.flake8Enabled": false,
    
  2. .pylintrcファイルを作成する

    pylint --generate-rcfile > .pylintrc
    

Gitの設定

.gitignoreの作成

  1. プロジェクト用フォルダ内直下に .gitignore ファイルを作成する
  2. .gitignore を下記のようにして保存する
    .env
    tmp/*
    

※Gitの登録外にしたいファイルを順次追加していってください。

pythonスクリプトの実行

sample.pyの作成

  1. プロジェクト用フォルダ内直下にある、tmpフォルダを作成する
  2. tmpフォルダ内に sample.py ファイルを作成する
  3. sample.py ファイルを下記のようにする(※保存しない)
    
    print("Hello world!"     )
    
    
  4. Flake8の警告が出ることを確認する
  5. sample.pyファイルを保存する
  6. blackが自動的に整形、Flake8の警告が消えることを確認する

VSCode デバッガー用設定ファイルを作成

  1. .vscode ディレクトリ内に、launch.json ファイルを作成する
  2. launch.json ファイルの内容を下記のようにして保存する
    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Python: Current File",
          "type": "python",
          "request": "launch",
          "program": "${file}",
          "console": "integratedTerminal",
        }
      ]
    }
    

sample.pyの実行

  1. sample.py ファイルを開く(既に開いている場合は、sample.pyのタブをアクティブにする)
  2. F5」を押して、デバッガーが起動して実行されることを確認する
  3. Shift + F5 でデバッガーを終了する

コマンドでPythonを実行する方法

  1. VSCodeのターミナル(PowerShell)で下記のコマンドを実行する
    pipenv run python .\tmp\sample.py
    

コマンドでpylintを実行する方法

  1. VSCodeのターミナル(PowerShell)で下記のコマンドを実行する
    pipenv run pylint .\hoge.py
    

(参考)pipenvのその他使い方

(参考)pipenvを使いPythonのライブラリを復元する

  1. PowerShellで下記コマンドを実行する
    pipenv sync --dev
    

(オプション).env ファイルの作成

  1. ワークスペースのディレクトリ直下に .envファイルを作成する

  2. エディタで開いて下記のように編集して保存する。

    user="<ユーザー名>"
    password="<パスワード>"
    

    補足:.envファイルに書いた内容は、pipenvが自動的に環境変数に設定してくれる

pipenvの仮想環境へ切り替え

  1. VSCodeのターミナル(PowerShell)で下記のコマンドを実行する
    pipenv shell
    

pipenv installがErrorになる場合

下記のようにpipenv installがErrorになった場合の対処法

> pipenv install boto3
Installing bot...
Error:  An error occurred while installing boto3!
Error text:

Installation Failed
  1. 下記のコマンドを実行してpipenv環境を再構築する
    pipenv --rm
    pipenv sync --dev
    
  2. Pythonインタープリターを認識させるためにVSCodeを一度終了させたのち起動させる。

Discussion