PoetryをVSCode向けに設定する

VSCodeやPyCharmでパッケージがインポートされていないというようなエラーが出るときにはインタプリタがうまく設定できていない可能性があります.

デフォルト設定

Poetryの仮想環境はデフォルトの設定ではMacのキャッシュディレクトリに作成されます.

terminal

$ poetry config --list
cache-dir = "/Users/USERNAME/Library/Caches/pypoetry"
virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/USERNAME/Library/Caches/pypoetry/virtualenvs

仮想環境の設定を変更

仮想環境をプロジェクトディレクトリ直下に作成するように設定を変更します.

terminal

$ poetry config virtualenvs.in-project true --local

VSCode が認識できるインタープリタは,ワークスペース或いはプロジェクトディレクトリ直下,python.venvPath で指定されているディレクトリ下にある virtualenvs だそうなので,これで認識できるようになります.

--local は TOML ファイルに virtualenvs.in-project = true を記録します.virtualenvs.in-projecttrue のとき,プロジェクトディレクトリ直下の .venv を仮想環境と認識します.

参考:Configuration | Documentation | Poetry

設定を変更した後に環境を構築し直しておきます.現在のバージョン(弊環境では Python 3.9)を削除し,TOML ファイルに従ってインストールします.

terminal

$ poetry env remove 3.9
$ poetry install

Python のバージョンは pyenv で制御してください.ちなみに,今の環境は以下のように整えています.

https://blog.mktia.com/pyenv-and-poetry-on-mac-m1

VSCodeのインタプリタ変更

左下の Python バージョンが表示されている部分を押すと,VSCode で利用するインタプリタを変更できます.

上記の設定を行うと,./.venv/bin/python を選択することで仮想環境を利用できるようになっています.

Pythonパスを設定

(追記 2021.3.6)

上記だけでは一部のパッケージが unresolved だったので,Python のパスを環境変数で渡してあげる必要がありました.

プロジェクトディレクトリ直下に .env ファイルを作成します.

.env

PYTHONPATH=.venv

参考