はじめに
Poetryの環境をVSCodeに読み込ませたらimportエラーになってしまいました。
その後、無事にエラーが解消されたのですが、ハマったのでメモを残します。
環境
Mac mojave
なぜ起きるのか
Poetryは仮想環境を設定値に従って作成するのがデフォルトの動作です。
VSCode的にはそんなん知ったことではないので、poetryを無視して読み込もうとするもライブラリが全く見つからないという自体になり解決できないとしてエラーになります。
それじゃどうするのか
設定変更してpoetry環境の作り直しをする必要があります。
Poetryはどんな設定でも一度作ってしまうとその環境を優先して読み込む仕様のようなので、手順を踏んで作り直さないと思った通りになりません。
1:設定確認
まずはpoetryの設定を確認します。
ここで重要なのはvirtualenvs.in-project
です。
エラーになる人はここがfalse
になっているかと思います。
この設定はpoetryでインストールしたものをどこに配置するかの設定になっており、false
の場合はvirtualenvs.path
で設定されたフォルダに格納されます。」
$ poetry config --list
cache-dir = "/Users/tasogarei/Library/Caches/pypoetry"
virtualenvs.create = true
virtualenvs.in-project = false
virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/tasogarei/Library/Caches/pypoetry/virtualenvs
2:設定変更
virtualenvs.in-project
をtrue
に変更します。
この設定はpoetryでインストールする箇所をプロジェクトのルートフォルダに配置するかの設定になっており、true
にすることでルートフォルダに配置されるようになります。
$ poetry config virtualenvs.in-project true
3:既存の削除
poetryの仕様で一度作ってしまうと設定変更しても特に関係なく変更前のファイルを見に行きます。
よって、virtualenvs.path
にあるフォルダを削除してあげないと変更しても意味がありません。
ということで、該当フォルダ内にある読みこみたいプロジェクトのフォルダを丸っと削除してあげてください。
4:poetryによるパッケージインストール
準備が整ったので、再びパッケージのインストールを実施します。
私は念の為init
からやり直しましたが、init
は必要ありません。
$ poetry install
5:VSCodeで確認
install
が完了すると.venv
フォルダがルートに生成されます。
今後はここにパッケージが入ることになり、VSCodeはいい感じにこのフォルダを読んでくれるため(特に追加の設定はいりません)、起動したらエラーが消えているかと思います。
これにて作業完了です。