そのうち誰かの役に立つ

もしくは誰の役にも立たない

asdf + Poetry + VSCodeでPython開発環境を作る

前の記事にも書いた通り新しいオモチャ端末を入手したので、ついでに開発環境も色々新しくしてみた。

Poetry

ぶっちゃけ今までPythonのパッケージ管理などしてこなかったのだが、まあ折角なので何か入れてみようと思い、 調べて名前が挙がったのが Pipenv/Poetry/Pyflowだった。 第一印象ではPyflowを使ってみようと思ったのだが、macOS + Python 3.9.0 がサポートされているか怪しかったのでPoetryにした。

brewでインストールできる。

brew install poetry

ついでにzsh completionもセット。公式ドキュメントにはPrezto版のコマンドもあったが、適用方法がよくわからなかったのでzsh版を使う。

mkdir -p ~/.zfunc
poetry completions zsh >> ~/.zfunc/_poetry

あわせて ~/.zshrc にも追記。

また、configを以下のように変更する。 この変更により仮想環境がプロジェクトの .venv/ 配下に作成されるようになるので、VSCodeで実行環境を指定できるようになる。

poetry config virtualenvs.in-project true

プロジェクト作成

適当なディレクトリでPoetryのプロジェクトを立ち上げる。 poetry new で新規作成してもよいし、既存のディレクトリで poetry init してもよい。

プロジェクトフォルダで git init し、ついでに gitignore.io で.gitignoreを作っておく。

git init
curl -sSL -o .gitignore https://www.gitignore.io/api/python,vscode

asdfでプロジェクト用の仮想環境を作る。バージョンはPoetryで作成された pyproject.toml の記述に合わせるか、仮想環境を先に作ってPoetryを合わせる。

asdf local python 3.9.0

linterとformatterをインストールする。今回はlinterに flake8、formatterに yapf を採用した。

poetry add --dev flake8 yapf

このあたりでプロジェクトの実行環境が作成されているはずなので、上述したように .venv/ 配下の環境を選択する。

yapfは保存時にかけられるものとして、ここまでの設定を入れた .vscode/settings.json はこんな感じになる。

{
    "python.pythonPath": ".venv/bin/python",
    "python.linting.pylintEnabled": false,
    "python.linting.flake8Enabled": true,
    "python.linting.enabled": true,
    "python.formatting.provider": "yapf",
    "[python]": {
        "editor.formatOnSave": true
    }
}

あとはよしなにコードを書いていけばよい。