👻

【202106追記】VSCode April 2021 でPython仮想環境の自動アクティベートがうまくいかなくなったら

2021/05/07に公開

【20210612追記】前に書いていた記事では、VSCode 立ち上げ時にターミナルも立ち上がっていた場合に、自動アクティベートがされないことがありました。より確実に自動アクティベートする方法がわかったので追記します。

settings.json に書くのは、次の内容だけでいいです。前の記事に書いていた、terminal.integrated に関する設定は削除してかまいません。

  "python.pythonPath": ".venv\\Scripts\\python.exe",
  "python.terminal.activateEnvInCurrentTerminal": true,

1行目は、仮想環境のあるパスの指定です。2行目は、「Python の拡張機能がアクティベートされたときに、そのときに開いているターミナルで仮想環境をアクティベートするかどうか」の指定です。

このように設定すると、VSCode を立ち上げて Python のファイルを開けば、VSCode は Python の拡張機能をアクティベートしようとします。そのとき、上の設定により、ターミナルが開いている場合は、仮想環境のアクティベートもやってくれます。また、その後、ターミナルを終了して再度立ち上げたときも、仮想環境のアクティベートを自動でやってくれます。

これで、アクティベートの処理は自動になるはずです。

以下は、以前に書いていた古い記事です。


Visual Studio Code April 2021 (version 1.56) のアップデートで、terminal.integrated.defaultProfile.<platform> が導入され、terminal.integrated.shellterminal.integrated.shellArgs が非推奨となりました。

僕は今まで、VSCode でターミナルを立ち上げたら自動的に仮想環境がアクティベートされるように、.setting.json で次のようにしていました。(python.pythonPath の設定ではうまく立ち上がらないときがあったので)

  "terminal.integrated.shellArgs.windows": [
    "-NoExit", "-Command", "./.venv/Scripts/activate"
  ]

April 2021 のアップデートで terminal.integrated.shellArgs が非推奨となったので、これではうまくいかないようになりました。新しい書き方に対応するため、次のように書き換えます。

  "terminal.integrated.profiles.windows": {
    "PowerShell": {
      "source": "PowerShell",
      "args": [
        "-NoExit",
        "-Command",
        "./.venv/Scripts/activate"
      ],
    }
  },
  "terminal.integrated.defaultProfile.windows": "PowerShell"

これで今までと同じことができるようになりました。

他にも、統合ターミナルを立ち上げたときに何か処理をするようにしていた人は、同様の書き換えをしましょう。

Discussion