Poetryが作成した仮想環境をVSCodeに認識させる方法
前書き
Zennでのはじめての投稿になります。よろしくお願いいたします。
Poetryでは何らかのパッケージをインストールする前に仮想環境が自動的に作成されるが、VSCodeがその仮想環境を見つけてくれないので、手動で認識させてあげなければいけません。
毎回忘れてググッている気がするので、今回はその方法をメモとして残していきたいと思います。
どうやるか
Poetryで作成した仮想環境をVSCodeに認識させる方法は私の知る限りだと以下の3パターンがあります。
- poetry shellで仮想環境に切り替えてからVSCodeを開く
- .vscode/setting.jsonにpoetryによって自動生成された仮想環境のパスを入力する
- プロジェクト直下で仮想環境を作成するようにPoetryの設定を変更する(個人的におすすめ)
以降で一つずつ具体的なやり方を記載していきます。
poetry shellで仮想環境に切り替えてからVSCodeを開く
細かい仕様はわかりませんが、VSCodeを開く前に利用しているpythonの環境を読み取るみたいなので、以下のようにしてPoetryで作成した仮想環境のシェルに切り替えてから、VSCodeを開くと仮想環境を認識してくれます。
poetry shell
vscode .
.vscode/setting.jsonにpoetryによって自動生成された仮想環境のパスを入力する
1つ目の「poetry shellで仮想環境に切り替えてからVSCodeを開く」方法だと、認識するまで時間がかかったり、反応がなかったりしたので、困ったときに.vscode/setting.json
を直接書き換えたりしてみたらうまく行きました。
書き換え手順としては、まず以下のコマンドを実行して、仮想環境が保存されているディレクトリを表示します。
poetry config virtualenvs.path
その仮想環境が保存されているディレクトリの中にプロジェクト名とランダムな文字列とpythonのバージョン情報が含まれているファイル(例: project-voct_rPc-py3.8の中のbin/pythonを指定すると良い)があるので、VSCodeで読み込ませたい仮想環境のディレクトリのパスを取得して、.vscode/setting.jsonに以下のように記載して保存すると読み込んでくれます。
{
"python.pythonPath": 取得したパス(例: "/home/username/.cache/pypoetry/virtualenvs/project-voct_rPc-py3.8/bin/python")
}
プロジェクト直下で仮想環境を作成するようにPoetryの設定を変更する
毎回プロジェクトを作るたびに上述の2つの方法で設定するのも面倒なので、私の場合はPoetryの設定でプロジェクト直下に仮想環境を作成するようにしています。具体的には以下のコマンドでできます。
poetry config virtualenvs.in-project true
poetry config --list
を実行すると以下のような結果が出力され、virtualenvs.in-project = true
となっていれば設定完了です。
cache-dir = "/home/pesuchin/.cache/pypoetry"
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}/virtualenvs"
この設定を完了してから仮想環境を作成すれば、VSCodeがPoetryの仮想環境を認識してくれるようになります。
この設定では、プロジェクト直下に.venvフォルダを作成してその下に仮想環境が作成されるので、Githubの標準の.gitignoreを使っていればcommitに含まれることはないですが、もし.gitignoreを配置していない場合はコミットに含めないように注意が必要です。
また、すでに仮想環境を作ってしまっているプロジェクトに関しては、設定変更しても仮想環境を作りなおしてくれることはないので、「poetry shellで仮想環境に切り替えてからVSCodeを開く」か「 .vscode/setting.jsonにpoetryによって自動生成された仮想環境のパスを入力する」で認識させるか一旦削除して作りなおすかする必要があります。
終わりに
Poetryは今のところ良いと思っているので、使ったことがなかった人もぜひ使ってみてください。
Discussion