【Windows版Visual Studio Code】Pythonのvenvを楽に使う方法
この記事での PowerShell
とは、Windows 10に標準搭載されている Windows PowerShell のことを指し、クロスプラットフォームに対応した PowerShell Core
ではありません。
Windows版Visual Studio Codeのシェルは、デフォルトでPowerShellが採用されている。
Pythonのvenvで仮想環境を作るまでは簡単だが、いざ activate
する時に、スクリプトの実行がポリシーで制限されて失敗してしまう問題の解決法を備忘録として書く。
venvで仮想環境を作る
適当なディレクトリをVisual Studio Codeで開いた後、以下を実行する (Pythonは既にインストールされている前提)
PS > py -m venv venv
普通に仮想環境が完成する。
適当にPythonを書いて実行してみる
ここでは、The Zen of Pythonを出力するプログラムを書いてみる (といってもインポートするだけ)
import this
Visual Studio Codeは賢いので、開いたディレクトリの中にある仮想環境をPython実行時に activate
(./venv/Scripts/Activate.ps1 を実行) しようとしてくれます。
F5
からの Enter
で実行すると、何やら赤い字が。
このシステムではスクリプトの実行が無効になっているため、ファイル ~ を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
みたいな。
つまり、仮想環境が activate
出来ていないということになる。
原因
どうやら、activate
用スクリプトの実行がポリシーで制限されているらしい。
これが、Windows版Visual Studio Codeのターミナル (PowerShell) でvenvを使う時に面倒な仕様なのである。
解決方法
その1
Set-ExecutionPolicy
コマンドを使用して、今操作しているVisual Studio Codeのターミナル (PowerShell) のみ、実行可能な RemoteSigned
ポリシーを適用してあげる。
PS > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
その後、手動で activate
用スクリプトを実行する。
PS > ./venv/Scripts/Activate.ps1
実行結果:
(venv) PS >
仮想環境の activate
に成功した。
上記コマンドを叩いてあげれば、その ターミナルに限り、問題は解決する。
しかし、新しいターミナルを起動する度にコマンドを叩くのは面倒だ。
その2 (永続的な方法)
その1 のポリシーはどこに保存されているかをまず考える。
調べてみると、環境変数 PSExecutionPolicyPreference
に保存されているらしい。
これが分かれば、Visual Studio Codeの設定でターミナル起動時に、環境変数 PSExecutionPolicyPreference
へ RemoteSigned
を設定すれば良いということになる。
Visual Studio Codeの設定 (JSON) の編集
F1
を押してコマンドパレットを表示。settings
くらいまで打つと上位に 基本設定: 設定 (JSON) を開く
というものが出てくると思うので、それを選択する。
基本設定: 設定 (JSON) を開く
開いたJSONの中に以下を追記して保存する。
{
"terminal.integrated.env.windows": {
"PSExecutionPolicyPreference": "RemoteSigned"
}
}
実行結果:
ちゃんと仮想環境の activate
に成功した上で、Pythonを実行出来るようになった。
(venv) PS >
あとがき
Windows版Visual Studio Codeのターミナル (PowerShell) でPythonのvenvを使う時には、少し細工が必要なようだが、一度設定してしまえば快適に利用出来る。
設定の同期機能 も登場して、どんどん便利になっていくVisual Studio Codeは良いぞ💪