【VSCode tips】統合ターミナル開始時に Python 仮想環境(venv) に入る【#2】


統合ターミナル開始時に Python 仮想環境(venv) に入る

ゴール

統合ターミナル(Ctl + Shift + ‘)を開いたときに、activate コマンドを自動実行する

環境

  • Visual Studio Code
  • Python 3 or 2
  • virtualenv or venv
  • Pythonプラグイン(Microsoft)

Python 仮想環境を用意する

これができる人が対象なので、詳しくは説明しない。

Python仮想環境の構築
# venvを使う場合
$ python -m venv envs

# virtualenvを使う場合
$ virtualenv envs

なお、Pythonのプラグインは仮想環境が入ったディレクトリの名前を envs にしておくと、
VSCode側は実行ファイルのパスなど、仮想環境を認識してくれるようである。

シェル起動時にスクリプトを自動実行する方法を調べる

ここでシェルが示す対象は統合ターミナルではなく、bashpowershellなどのシステム(OS)のシェルである。

統合ターミナルはこれらのシステムのシェルを使用している。
これらのシェルを起動する際には、任意のコマンドまたはスクリプトを実行する事ができるオプションを持っているため、このオプションを指定して、シェル起動時に activate / activate.bat / Activate.ps1 を実行するように設定するとよい。

シェル別のオプションは以下である。

OSX / Linux

bash
$ /bin/bash --rcfile <仮想環境へのPATH>/bin/activate`

ただし、${HOME}/.bashrc が読み込まれなくなってしまう点に注意しなければならない。

Windows

コマンドプロンプト
$ cmd /k <仮想環境へのパス>/Scripts/activate
PowerShell
$ powershell -NoExit -Command <仮想環境へのパス>/Scripts/Activate.ps1

ワークスペースの設定に追加する

統合ターミナルが起動するときに調べておいたコマンドを実行するようVSCodeの設定に追加する。ショートカットからでも表示は可能だが、画面左下の歯車マークをクリックして、設定 を選択するのが簡単であろう。

次に、ワークスペースの設定 タブを選択する。
デフォルトでははじめにユーザ設定が選択されているが、ユーザ設定はユーザグローバルに設定が反映される。追加すると、これ以外に使用するプロジェクトすべてに適用されてしまうので注意が必要である。

ワークスペースの設定を選択したら、環境に応じて次を追記する

OSX/bashの場合
{
  "terminal.integrated.shellArgs.osx": [
    "--rcfile", "<仮想環境へのパス>/bin/activate"
  ]
}
Linux/bashの場合
{
  "terminal.integrated.shellArgs.linux": [
    "--rcfile", "<仮想環境へのパス>/bin/activate"
  ]
}
コマンドプロンプトの場合
{
  "terminal.integrated.shellArgs.windows": [
    "/k", "<仮想環境へのパス>/Scripts/activate"
  ]
}
PowerShellの場合
{
  "terminal.integrated.shellArgs.windows": [
    "-NoExit", "-Command", "<仮想環境へのパス>/Scripts/activate"
  ]
}

追記したら、保存する。
このあと、VSCodeを再起動する必要はない。

確認

Ctrl + Shift + ‘ を押して、統合ターミナルを起動する。
次のように、プロンプトの先頭に(envs) などが表示されれば成功である。

以下はOSXでの例である。