VS CodeでWorkspace毎に使用するPython実行環境を切り替える
2019年12月4日 “venvを使用している場合“を更新しました。
はじめに
弊社ではプロジェクト(案件)により以下のPython実行環境を使用しています。
- Python 2.7
- Python 3.5
- Python 3.6
- Python 3.7 (64bit)
- Python 3.7 (32bit)
- アプリケーションスイートに含まれているPython 3.5
開発環境(Visual Studio Code)で複数のPython実行環境を切り替える方法を紹介します。
前提
開発環境
開発環境は以下です。
- Windows 10
- Visual Studio Code(Pythonの拡張機能は導入済)
- 環境変数にPython実行環境のディレクトリのパスを設定しない
- プロジェクト(案件)毎にディレクトリ(以下プロジェクトディレクトリ)を分け、プロジェクトディレクトリをVisual Studio Codeから開く
やりたい事
開発時は以下のターミナル実行とデバック実行をやりたいので設定を行います。
- Visual Studio Codeのターミナルから、任意のPython実行環境を使用してPythonスクリプトを実行する
- Visual Studio Codeで、任意のPython実行環境を使用してPythonスクリプトをデバック実行する
任意のPython実行環境を使用するための設定
.vscode ディレクトリの作成
任意のPython実行環境を使用するための設定ファイル(settings.json
とlaunch.json
)は、プロジェクトディレクトリ直下に .vscode ディレクトリを作成しその下に配置します。
プロジェクトディレクトリ
└─.vscode
├── settings.json
└── launch.json
settings.json の作成
ターミナルから任意のPython環境を使用するためのsettings.json
を作成する
{
"files.eol": "\n",
"terminal.integrated.env.windows": {
"PATH": "${env:PATH};Python実行環境のパス"
}
"python.pythonPath": "python.exeのパス"
}
"files.eol": "\n"
は、新規ファイルの改行コードが\n
になるようにしている。"python.pythonPath": "python.exeのパス"
には、デバック実行時に使用するpython.exe
を指定する。
使用するPython実行環境がC:\\Python\\Python36
の場合は以下のように設定する。
{
"files.eol": "\n",
"terminal.integrated.env.windows": {
"PATH": "${env:PATH};C:\\Python\\Python36;C:\\Python\\Python36\\Scripts"
},
"python.pythonPath": "C:\\Python\\Python36\\python.exe"
}
launch.json の作成
デバック実行するためのlaunch.json
を作成する
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${fileDirname}"
}
]
}
"cwd": "${fileDirname}"
の設定により、Pythonスクリプトあるディレクトリからデバック実行する。"cwd": "${fileDirname}"
の設定がない場合は、${workspaceRoot}
(プロジェクト ディレクトリ直下)からデバック実行する。
備考
PYTHONPATHの指定
PYTHONPATHを指定する場合はsettings.json
に設定します。(プロジェクト共通のモジュールをlibディレクトリにまとめている場合etc)。
{
"files.eol": "\n",
"terminal.integrated.env.windows": {
"PATH": "${env:PATH};C:\\Python\\Python36;C:\\Python\\Python36\\Scripts",
"PYTHONPATH": "${env:PYTHONPATH};${workspaceRoot}\\lib"
},
"python.pythonPath": "C:\\Python\\Python36\\python.exe"
}
venvを使用している場合
venvを使用する場合はsettings.json
を以下のようにします。
{
"files.eol": "\n",
"terminal.integrated.env.windows": {
"PATH": "${workspaceRoot}\\venv\\Scripts;${env:PATH}"
},
"python.pythonPath": "${workspaceRoot}\\venv\\Scripts\\python.exe"
}
“PATH”に関する補足
本記事の初稿投稿時では、venv環境におけるsettings.jsonの”PATH”を以下のように記載していました。
"PATH": "${env:PATH};${workspaceRoot}\\venv\\Scripts"
しかしこのように設定を記述した状態で2019/11にpythonコマンドを実行したところ、Microsoft Storeが表示されてしまう現象が起きました。
${env:PATH}
で走査されるディレクトリのうちの、"C:/Users/[user]/AppData/Local/Microsoft/WindowsApps"
以下に、ストアへ接続される”python.exe”ファイルが存在していることが原因でした。
どこかのwindows Updateでファイルが追加されたのかもしれません。
現在、venvを使用する場合は、上記settings.jsonのように記入すれば問題ありません。