チームにおける円滑なPython開発環境 [Poetry + pyenv + black + isort]
チームで開発環境を統一できると共同作業が格段に楽になります.この記事ではpoetry + pyenvにより仮想環境を統一し,black + isortによってコードの自動フォーマットを設定します.
Editor
好きなものを使用してください.vimでもpycharmでもVScodeでも.ここではVScode前提で設定を記します.
- VSCode
vscodeのインストール方法は以下
仮想環境
仮想環境を使用することでチームでコードを書く際に実行環境を揃えることができ,共同作業の効率がぐんと上がります.ここでは以下の仮想環境ツールを使用します.
- pyenv
- poetry
インストール方法はこの記事を参照してください.
pyenvを使用して使用するPythonをインストールする.
以下のコマンドで使用できるPythonのバージョンをリストアップできます.
pyenv install --list
今回はPython 3.7を導入することにしましょう.
pyenv install 3.7
pyenvの詳しい使用方法はこの記事を参照してください.
poetryによる新規プロジェクトの作成
プロジェクトを新規作成する場合,以下を実行します.仮想環境をプロジェクトのディレクトリ直下に置くためにpoetry config virtualenvs.in-project true
を同時に実行します.(VSCodeを正しく動かすために必要)
poetry config virtualenvs.in-project true
poetry new new_project
pyproject.tomlの設定
すると,プロジェクト内にpyproject.toml
というファイルが生成されます.このファイルが設定ファイルとなり,今後編集していくものとなります.前の項でインストールしたPythonのバージョンを指定してみましょう.以下のように記述することでPython 3.7系を使用することを明記できます.
[tool.poetry.dependencies]
python = "^3.7"
仮想環境の構築
その後,以下のコマンドでPythonの仮想環境を構築,インストールすることができます.
poetry install
ライブラリのインストール
この仮想環境内に新しいライブラリをインストールしたい場合は以下のようにadd
optionを指定する.ここではblack
, isort
, flake8
, mypy
を開発用(-D
option)でインストールしてみましょう.
poetry add flake8 -D
poetry add black -D
poetry add isort -D
poetry add mypy -D
仮想環境内での実行
仮想環境内で実行したい場合,プログラムを仮にyour_program.py
と置くと以下で実行できる.
poetry run python your_program.py
仮想環境内でのシェルの実行
また,仮想環境内でシェルを実行したい場合は以下を打つことで,シェルが起動する.
poetry shell
既存プロジェクトへのpoetryの導入
すでにプロジェクトyour_project
が存在する場合,以下を実行します.仮想環境をプロジェクトのディレクトリ直下に置くためにpoetry config virtualenvs.in-project true
を実行します.(VSCodeを正しく動かすために必要)
cd your_project
poetry config virtualenvs.in-project true
poetry init
poetry install
initをするときにtestなどのディレクトリを作成されたくない場合は以下の--no-interaction
のoptionを指定してください.
poetry init --no-interaction
poetryの詳細な使用方法
詳細な使用方法は「公式document (英語)」か「この記事: Poetry: Python の依存関係管理とパッケージングを支援するツール」,「この記事: Poetryを使ったPythonパッケージ開発からPyPI公開まで」を参照してください.
VSCodeでpoetryで作成した仮想環境のPythonをinterpreterとして使用
作成したプロジェクトをVSCodeで開きます.適当なPythonファイルを作成 or 選択し,左下の select interpreter
を押し,.venv
内のPythonを選択します.
Python formatterの導入
チームでコードを書く際に書き方が統一されていると,コードが読みやすくなり,円滑にコーディングが進みます.ここではblackで自動でコードをフォーマットし,isortでimport文の順序を揃えることで,自動的に書き方が統一されるようにします.上のpoetryを導入した前提でFormatterの導入方法を記します.(VSCode用)
black
-
install
poetry add black -D
poetry add flake8 -D
-
VSCodeの設定をします.
ctrl + ,
で設定画面を表示できるため以下のように設定します.以下の設定によってsaveするたびにコードをフォーマットしてくれます.
設定名 | 機能 | 設定値 |
---|---|---|
python.linting.enabled | Lint機能を有効にするかどうか | true |
python.linting.pylintEnabled | Linterにpylintを使用するかどうか | false |
python.linting.flake8Enabled | Linterにflake8を使用するかどうか | true |
python.linting.lintOnSave | ファイル保存時にLintを実行するか | true |
python.formatting.provider | Pythonコードの整形に何を使用するか | black |
editor.formatOnSave | ファイル保存時に自動整形するかどうか | true |
isort
-
install
poetry add isort -D
-
保存時に自動でimport文の順序を揃えてくれるようにvscodeの設定をします.
-
VSCode上で
ctrl + shift + p
を打つことでコマンド画面を出します. -
Preferences: Open Settings (JSON)
と打ち,setting.jsonを表示します. -
以下を追記します.
{ "[python]":{ "editor.codeActionsOnSave":{ "source.organizeImports":true } }
-