在開發 Python 專案時,通常會建立虛擬環境 (venv) 來隔離套件。但不少人會遇到一個問題:

「打開 VS Code 的終端,並不會自動切換到我的 venv 環境。」

即使你已經在 VS Code 裡選擇了 Python 解譯器、修改了 settings.json,終端依然是系統預設的環境。
這篇文章會整理出 原因、常見設定方式,以及一個最有效的做法。


為什麼 VS Code 沒有自動啟用 venv?

VS Code 本身確實有一個機制可以「幫你在終端 activate venv」:

  • 你在 工作目錄選擇 Python 解譯器

  • 並且確保設定檔裡有:

 

 

"python.terminal.activateEnvironment": true

但這個機制有時並不穩定,有些版本的 VS Code 或某些 shell (像是 PowerShell) 沒有正確執行 activate 指令,終端就會開在系統的 Python。


方法 1:官方建議做法

1️⃣ 按下 Ctrl+Shift+P → 選擇 Python: Select Interpreter
選擇你專案對應的 venv 解譯器。

2️⃣ 確認 .vscode/settings.json 裡有記錄:

{
  "python.defaultInterpreterPath": "C:/path/to/your/venv/Scripts/python.exe",
  "python.terminal.activateEnvironment": true
}

3️⃣ 重新啟動 VS Code。
理論上,打開終端時會自動幫你執行 venv/Scripts/activate


缺點

很多人遇到的情況是:

  • 終端打開後還是系統 Python。

  • 沒有顯示虛擬環境名稱。

這通常是 VS Code 與 PowerShell 互動的 bug 或行為差異。


方法 2:直接用 terminal profile 強制載入 venv

這是最穩定的方法,也就是自定義終端 profile,讓 PowerShell 打開時自動執行 activate.ps1

步驟

1️⃣ 打開 .vscode/settings.json
加入以下設定:

{
  "terminal.integrated.profiles.windows": {
    "PowerShellVenv": {
      "path": "powershell.exe",
      "args": [
        "-NoExit",
        "-Command",
        "& { . 'C:/path/to/your/venv/Scripts/Activate.ps1' }"
      ]
    }
  },
  "terminal.integrated.defaultProfile.windows": "PowerShellVenv"
}

請把 C:/path/to/your/venv 改成你自己的虛擬環境路徑。


效果

當你重新啟動 VS Code 並打開終端時,會看到類似:

(venv) PS C:\your\project>

這表示虛擬環境已經被正確啟用。


小結

方法優點缺點
方法 1:選擇解譯器 官方推薦、簡單 不穩定,有時失效
方法 2:自訂 profile 穩定、每次都成功 需要手動設定 .vscode/settings.json

建議優先嘗試 方法 1,如果不穩定再採用 方法 2






 

這次我遇到的問題是不管 setting 如何改
VS code 終端打開就是不變
我記得之前明明會變阿...

最後用 方法2
也就是增加 Command 才成功
給大家參考囉

另要要注意
讓這個 setting 要生效
必須使用 Open Folder 加入資料夾
而不是用 Add Folder 到工作區!

而資料夾底下就必須有 .vscode 設定喔!

 

 

希望大家可以快樂用 vs code 開發喔~