チーム開発向け Windows, VSCode, pyenv, pipenv, flake8, pylint, black設定方法
ガチなチーム開発向けに、本気出してVSCode Windowsにpyenv経由でPythonランタイムをインストールしてpipenvでプロジェクトを構成、Linterとフォーマッターもちゃんと動くようにする手順。
事前準備
VSCodeのインストール
-
VSCodeをインストールする
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
Git for Windowsのインストール
-
Git for Windowsをインストールする
既存のPythonランタイムの削除
- PythonをすでにWindowsにインストールしている場合は、削除する
Windowsに設定されているpython用のアプリの実行エイリアスを無効化する
- 「Windowsのメニュー」 -> 「設定」 -> 「アプリ」 -> 「アプリと機能」を開く
- 「アプリ実行エイリアス」をクリックする
- 「アプリインストーラ python.exe」 を 「オフ」にする
- 「アプリインストーラ python3.exe」 を 「オフ」にする
pyenv-winの導入設定
pyenv-win を導入する
- Powershellで下記コマンド実行する参考: https://github.com/pyenv-win/pyenv-win
git clone https://github.com/pyenv-win/pyenv-win.git "$HOME/.pyenv"
pyenv-win用の環境変数を設定する
- 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の導入確認
- 新しくPowerShellを開き、下記コマンドを実行できることを確認する(VSCode内のPowerShellを使う場合は、事前にVSCodeを再起動させる)
pyenv --version pyenv rehash pyenv
pythonランタイムの導入
プロジェクト用のフォルダを作成する
- 任意の場所にプロジェクトで使うフォルダを作成する
Python をインストールする
- PowerShellを開きプロジェクト用フォルダに移動する
- PowerShellで下記コマンドを実行する
pyenv install --list
- 実行環境(AWS Lambdaなど)がサポートするPythonのバージョンを確認する。サポートするバージョンで一番新しいPythonランタイムをインストールする
pyenv install 3.8.9 pyenv local 3.8.9 pyenv rehash
- PowerShellで下記コマンドを実行し、Pythonのバージョンが表示されることを確認する
python --version Python 3.8.9
VSCodeの設定1
VSCode拡張の導入
- 下記VSCode Extentionを導入する
- editorconfig.editorconfig
- ms-python.python
- ms-python.vscode-pylance
- visualstudioexptteam.vscodeintellicode
Editor Configの設定
- プロジェクトフォルダ直下に、.editorconfigファイルを作成する(改行はLFにする)
- .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をインストールする
- PowerShellで下記コマンドを実行する
python -m pip install --upgrade pip pip install pipenv pyenv rehash
pipenvの仮想環境をプロジェクト用ディレクトリに作成するよう環境変数を設定する
- PowerShellで下記コマンドを実行する
[System.Environment]::SetEnvironmentVariable('PIPENV_VENV_IN_PROJECT',"true","User")
pipenv仮想環境を作成する
-
PowerShellで下記コマンドを実行する
pipenv --python 3.8
※pyenvで導入済みのpythonのバージョンを指定する必要がある
VSCodeの設定2
VSCodeの設定用に settings.json を作成する
- プロジェクト用フォルダ内に.vscode ディレクトリを作成する
- .vscode 内に settings.json ファイルを作成する
settings.jsonを下記のようにして保存する{ }
VSCodeのPythonインタープリターの設定をする
-
settings.jsonに下記内容を追加する
"python.pythonPath": "${workspaceFolder}/.venv/Scripts/python.exe", "python.analysis.completeFunctionParens": true,
VSCodeを再起動させてPythonのインタープリターを認識させる
- VSCodeを一度終了、再起動させる
- VSCode左下のメニューに Python 3.8.9 64-bit ('.venv': pipenv)のように表示され、pythonインタープリターが認識されていることを確認する
フォーマッターとLinterの導入、設定
Black(フォーマッター)の導入
-
PowerShellで下記コマンドを実行する
pipenv install --dev black --pre
-
settings.jsonに下記エントリを追加
"python.formatting.provider": "black", "python.autoComplete.addBrackets": true,
flake8の導入
-
PowerShellで下記コマンドを実行する
pipenv install --dev flake8
-
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を選択してください。
-
PowerShellで下記コマンドを実行する
pipenv install --dev pylint
せっかくだから、入れておく
(参考)pylintを普段のLinterとして使う場合
-
settings.jsonのエントリを下記のように設定する
"python.linting.enabled": true, "python.linting.pylintEnabled": true, "python.linting.flake8Enabled": false,
-
.pylintrcファイルを作成する
pylint --generate-rcfile > .pylintrc
Gitの設定
.gitignoreの作成
- プロジェクト用フォルダ内直下に .gitignore ファイルを作成する
- .gitignore を下記のようにして保存する
.env tmp/*
※Gitの登録外にしたいファイルを順次追加していってください。
pythonスクリプトの実行
sample.pyの作成
- プロジェクト用フォルダ内直下にある、tmpフォルダを作成する
- tmpフォルダ内に sample.py ファイルを作成する
- sample.py ファイルを下記のようにする(※保存しない)
print("Hello world!" )
- Flake8の警告が出ることを確認する
- sample.pyファイルを保存する
- blackが自動的に整形、Flake8の警告が消えることを確認する
VSCode デバッガー用設定ファイルを作成
- .vscode ディレクトリ内に、launch.json ファイルを作成する
- launch.json ファイルの内容を下記のようにして保存する
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", } ] }
sample.pyの実行
- sample.py ファイルを開く(既に開いている場合は、sample.pyのタブをアクティブにする)
- F5」を押して、デバッガーが起動して実行されることを確認する
- Shift + F5 でデバッガーを終了する
コマンドでPythonを実行する方法
- VSCodeのターミナル(PowerShell)で下記のコマンドを実行する
pipenv run python .\tmp\sample.py
コマンドでpylintを実行する方法
- VSCodeのターミナル(PowerShell)で下記のコマンドを実行する
pipenv run pylint .\hoge.py
(参考)pipenvのその他使い方
(参考)pipenvを使いPythonのライブラリを復元する
- PowerShellで下記コマンドを実行する
pipenv sync --dev
(オプション).env ファイルの作成
-
ワークスペースのディレクトリ直下に .envファイルを作成する
-
エディタで開いて下記のように編集して保存する。
user="<ユーザー名>" password="<パスワード>"
補足:.envファイルに書いた内容は、pipenvが自動的に環境変数に設定してくれる
pipenvの仮想環境へ切り替え
- 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
- 下記のコマンドを実行してpipenv環境を再構築する
pipenv --rm pipenv sync --dev
- Pythonインタープリターを認識させるためにVSCodeを一度終了させたのち起動させる。
Discussion