LoginSignup
24
19

More than 3 years have passed since last update.

poetryで作ったpythonプロジェクトをVSCodeに読み込ませるとエラーになった時の対処法

Last updated at Posted at 2020-01-15

はじめに

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-projecttrueに変更します。
この設定はpoetryでインストールする箇所をプロジェクトのルートフォルダに配置するかの設定になっており、trueにすることでルートフォルダに配置されるようになります。

$ poetry config virtualenvs.in-project true

3:既存の削除

poetryの仕様で一度作ってしまうと設定変更しても特に関係なく変更前のファイルを見に行きます。
よって、virtualenvs.pathにあるフォルダを削除してあげないと変更しても意味がありません。

ということで、該当フォルダ内にある読みこみたいプロジェクトのフォルダを丸っと削除してあげてください。

4:poetryによるパッケージインストール

準備が整ったので、再びパッケージのインストールを実施します。
私は念の為initからやり直しましたが、initは必要ありません。

$ poetry install

5:VSCodeで確認

installが完了すると.venvフォルダがルートに生成されます。
今後はここにパッケージが入ることになり、VSCodeはいい感じにこのフォルダを読んでくれるため(特に追加の設定はいりません)、起動したらエラーが消えているかと思います。

これにて作業完了です。

24
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
19