TECH BLOG


VS CodeでWorkspace毎に使用するPython実行環境を切り替える

LINEで送る
Pocket

はじめに

弊社ではプロジェクト(案件)により以下の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.jsonlaunch.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": "${env:PATH};${workspaceRoot}\\venv\\Scripts"
    },
    "python.pythonPath": "${workspaceRoot}\\venv\\Scripts\\python.exe"
}