speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

Visual Studio CodeでPython仮想環境

かれこれ10年以上ぐらい使っていたEmacsからVisual Studio Code(以下、VS Code)に改宗する可能性を感じて、ひとまず最近よく書いているPython環境をVS Codeで整えようという話です。

Pythonはプロジェクトごとの仮想環境の扱いがうまくいけばとりあえず何とかなるだろうという感じです。

私のPython仮想環境の作り方

私のPython仮想環境の作り方はこちらです。 sampleはプロジェクトの名前などです。プロジェクトのディレクトリ以下の.venvの下に仮想環境を作ります。

python3 -m venv .venv/sample

ところが、巷でよく見かける仮想環境の作り方は単に次のようにしているようです。

python3 -m venv .venv

この方法で私がイマイチだなぁと思っているのは、仮想環境をactivateしたときに表示される名前が.venvになってしまうことです。

speg03@speg03-mbp sample % python3 -m venv .venv
speg03@speg03-mbp sample % . .venv/bin/activate
(.venv) speg03@speg03-mbp sample %

そのため最初に書いたように仮想環境を作っています。

speg03@speg03-mbp sample % python3 -m venv .venv/sample
speg03@speg03-mbp sample % . .venv/sample/bin/activate
(sample) speg03@speg03-mbp sample %

こうなっていると複数の仮想環境を作ったときでも、今どの仮想環境を使っているのかわかりやすくなります。

VS Codeの設定

VS CodePythonのファイルを開いたときに、どのPythonを使うか選択することができます。しかし、.venvに仮想環境を作っていた場合はその中のPythonを見つけてくれるようですが、.venv/sampleのように作っていた場合は見つけてくれないようでした。

VS Codeの設定ではpython.venvPathに仮想環境を作っているディレクトリを指定してあげればよいようです。プロジェクトのワークスペース直下というのは${workspaceFolder}で表現できます。

{
    "python.venvPath": "${workspaceFolder}/.venv"
}

一度、この中にある仮想環境を選択しておけば、ワークスペース設定として、.vscode/settings.jsonにそのPythonのパスが書き込まれているので、次回以降はこの仮想環境が自動的に選ばれるようになります。

参考: Using Python Environments in Visual Studio Code