🚀 在 VS Code 中免費取得

VS Code 中的 Python 環境

Python 中的「環境」是指執行 Python 程式的內容,其中包含解譯器和任意數量的已安裝套件。

注意:如果您想要更熟悉 Python 程式設計語言,請參閱更多 Python 資源

Python 環境的類型

全域環境

根據預設,任何已安裝的 Python 解譯器都會在其自己的全域環境中執行。例如,如果您在新的終端機中執行 pythonpython3py (取決於您安裝 Python 的方式),您會在該解譯器的全域環境中執行。您安裝或解除安裝的任何套件都會影響全域環境,以及您在其中執行的所有程式。

提示:在 Python 中,最佳做法是建立工作區專用的環境,例如使用本機環境。

本機環境

您可以為工作區建立兩種環境類型:虛擬conda。這些環境可讓您安裝套件,而不會影響其他環境,從而隔離工作區的套件安裝。

虛擬環境

虛擬環境是建立環境的內建方式。虛擬環境會建立一個資料夾,其中包含特定解譯器的複本 (或符號連結)。當您將套件安裝到虛擬環境時,它會結束於這個新資料夾中,因此與其他工作區使用的其他套件隔離。

注意:雖然可以將虛擬環境資料夾當做工作區開啟,但不建議這樣做,而且可能會導致使用 Python 擴充功能時發生問題。

Conda 環境

conda 環境是使用 conda 套件管理員管理的 Python 環境 (請參閱 Conda 入門)。Conda 環境和虛擬環境之間的選擇取決於您的封裝需求、團隊標準等。

Python 環境工具

下表列出與 Python 環境相關的各種工具

工具 定義和目的
pip Python 套件管理員,可安裝和更新套件。預設會與 Python 3.9 以上版本一起安裝 (除非您使用的是 Debian 系統的作業系統;在這種情況下,請安裝 python3-pip)。
venv 可讓您管理不同專案的個別套件安裝,並預設與 Python 3 一起安裝 (除非您使用的是 Debian 系統的作業系統;在這種情況下,請安裝 python3-venv)
conda Miniconda 一起安裝。它可用於管理套件和虛擬環境。通常用於資料科學專案。

建立環境

使用 [建立環境] 命令

若要在 VS Code 中使用虛擬環境或 Anaconda 建立本機環境,您可以遵循下列步驟:開啟 [命令選擇區] (⇧⌘P (Windows、Linux Ctrl+Shift+P)),搜尋 Python: 建立環境 命令,然後選取它。

此命令會顯示環境類型清單:VenvConda

Create Environment dropdown

如果您要使用 Venv 建立環境,此命令會顯示可用於做為新虛擬環境基礎的解譯器清單。

Virtual environment interpreter selection

如果您要使用 Conda 建立環境,此命令會顯示可用於專案的 Python 版本清單。

Conda environment Python version selection

選取所需的解譯器或 Python 版本之後,通知將會顯示環境建立進度,且環境資料夾會出現在您的工作區中。

Create environment status notification

注意:此命令也會安裝需求/相依性檔案 (例如 requirements.txtpyproject.tomlenvironment.yml) 中列出的必要套件,這些檔案位於專案資料夾中。它也會將 .gitignore 檔案新增至虛擬環境,以協助防止您意外將虛擬環境提交至原始檔控制。

在終端機中建立虛擬環境

如果您選擇手動建立虛擬環境,請使用下列命令 (其中 ".venv" 是環境資料夾的名稱)

# macOS/Linux
# You may need to run `sudo apt-get install python3-venv` first on Debian-based OSs
python3 -m venv .venv

# Windows
# You can also use `py -3 -m venv .venv`
python -m venv .venv

注意:若要深入了解 venv 模組,請閱讀 Python.org 上的虛擬環境的建立

當您建立新的虛擬環境時,VS Code 中會顯示提示,讓您選取工作區的環境。

Python environment prompt

提示:請務必更新您的原始檔控制設定,以防止意外提交您的虛擬環境 (例如在 .gitignore 中)。由於虛擬環境不可攜,因此通常不適合提交以供其他人使用。

在終端機中建立 conda 環境

Python 擴充功能會自動偵測現有的 conda 環境。我們建議您將 Python 解譯器安裝到您的 conda 環境中,否則在您選取環境之後,系統會為您安裝一個解譯器。例如,下列命令會建立名為 env-01 的 conda 環境,其中包含 Python 3.9 解譯器和數個程式庫

conda create -n env-01 python=3.9 scipy=0.15.0 numpy

注意:如需 conda 命令列的詳細資訊,您可以閱讀Conda 環境

其他注意事項

  • 如果您在 VS Code 執行時建立新的 conda 環境,請使用 Python: 選取解譯器 視窗右上角的重新整理圖示;否則您可能無法在那裡找到環境。

    Conda environment refresh icon

  • 若要確保從 Shell 的角度正確設定環境,請使用 Anaconda 提示字元並啟用所需的環境。然後,您可以輸入 code . 命令來啟動 VS Code。VS Code 開啟之後,您可以使用 [命令選擇區] 或按一下狀態列來選取解譯器。

  • 雖然 VS Code 的 Python 擴充功能目前沒有與 conda environment.yml 檔案直接整合,但 VS Code 本身是絕佳的 YAML 編輯器。

  • 如果預設 Shell 設定為 PowerShell,則無法在 VS Code 整合式終端機中自動啟用 Conda 環境。若要變更 Shell,請參閱整合式終端機 - 終端機設定檔

  • 您可以手動指定用於啟用的 conda 可執行檔路徑 (4.4 以上版本)。若要這麼做,請開啟 [命令選擇區] (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行 喜好設定: 開啟使用者設定。然後在使用者設定的 Python 擴充功能區段中,使用適當的路徑設定 python.condaPath

使用 Python 解譯器

選取並啟用環境

Python 擴充功能會嘗試尋找,然後選取它認為最適合工作區的環境。如果您想要選取特定環境,請使用 [命令選擇區] (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中的 Python: 選取解譯器 命令。

Python: Select Interpreter command

注意:如果 Python 擴充功能找不到解譯器,它會發出警告。在 macOS 12.2 和更舊版本上,如果您使用 OS 安裝的 Python 解譯器,擴充功能也會發出警告,因為已知它有相容性問題。在這兩種情況下,您都可以將 python.disableInstallationCheck 設定為使用者設定中的 true,以停用這些警告。

Python: 選取解譯器 命令會顯示可用的全域環境、conda 環境和虛擬環境清單。(請參閱擴充功能尋找環境的位置區段以取得詳細資訊,包括這些環境類型之間的區別。) 例如,下圖顯示數個 Anaconda 和 CPython 安裝,以及位於工作區資料夾內的 conda 環境和虛擬環境 (env)

List of interpreters

注意:在 Windows 上,VS Code 可能需要一些時間才能偵測到可用的 conda 環境。在此過程中,您可能會在環境路徑之前看到 "(已快取)"。此標籤表示 VS Code 目前正在使用該環境的快取資訊。

如果您在 VS Code 中開啟資料夾或工作區,並從清單中選取解譯器,Python 擴充功能會將該資訊儲存在內部。這可確保當您重新開啟工作區時,會使用相同的解譯器。

選取的環境會由 Python 擴充功能用於執行 Python 程式碼 (使用 Python: 在終端機中執行 Python 檔案 命令)、在編輯器中開啟 .py 檔案時提供語言服務 (自動完成、語法檢查、程式碼檢查、格式化等),以及使用 終端機: 建立新終端機 命令開啟終端機。在後者的情況下,VS Code 會自動啟用選取的環境。

提示:若要防止自動啟用選取的環境,請將 "python.terminal.activateEnvironment": false 新增至您的 settings.json 檔案 (它可以放在任何位置,做為現有設定的同層級)。

提示:如果啟用命令產生訊息「Activate.ps1 未經過數位簽署。您無法在目前的系統上執行此指令碼。」,則您需要暫時變更 PowerShell 執行原則以允許指令碼執行 (請參閱 PowerShell 文件中的關於執行原則):Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

注意:根據預設,VS Code 會在偵錯程式碼時使用為您的工作區選取的解譯器。您可以藉由在偵錯組態的 python 屬性中指定不同的路徑來覆寫此行為。請參閱選擇偵錯環境

選取的解譯器版本會顯示在狀態列的右側。

Status Bar showing a selected interpreter

當未選取任何解譯器時,狀態列也會反映此情況。

Status bar showing no selected Python interpreter

在這兩種情況下,按一下狀態列的這個區域都是 Python: 選取解譯器 命令的便利捷徑。

提示:如果您在使用 VS Code 辨識虛擬環境時遇到任何問題,請提出問題,以便我們協助判斷原因。

手動指定解譯器

如果 VS Code 無法自動找到您想要使用的解譯器,您可以瀏覽檔案系統上的解譯器,或手動提供其路徑。

您可以執行 Python: 選取解譯器 命令,然後選取解譯器清單頂端顯示的 輸入解譯器路徑... 選項來執行此動作

Enter interpreter path option on the interpreters list

然後,您可以直接在文字方塊中輸入 Python 解譯器的完整路徑 (例如,".venv/Scripts/python.exe"),或選取 [尋找...] 按鈕並瀏覽您的檔案系統,以尋找您想要選取的 Python 可執行檔。

Enter path or browse for an interpreter

如果您想要手動指定在您第一次開啟工作區時將使用的預設解譯器,您可以建立或修改 python.defaultInterpreterPath 設定的項目。

注意:在已為工作區選取解譯器之後,不會挑選對 python.defaultInterpreterPath 設定所做的變更;一旦為工作區選取初始解譯器,就會忽略對設定所做的任何變更。

此外,如果您想要為所有 Python 應用程式設定預設解譯器,您可以手動將 python.defaultInterpreterPath 的項目新增至您的使用者設定中。若要這麼做,請開啟 [命令選擇區] (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並輸入 喜好設定: 開啟使用者設定。然後在使用者設定的 Python 擴充功能區段中,使用適當的解譯器設定 python.defaultInterpreterPath

擴充功能如何自動選擇環境

如果尚未指定解譯器,則 Python 擴充功能會依下列優先順序自動選取版本最高的解譯器

  1. 直接位於工作區資料夾底下的虛擬環境。
  2. 與工作區相關但全域儲存的虛擬環境。例如,位於工作區資料夾外部的 PipenvPoetry 環境。
  3. 全域安裝的解譯器。例如,在 /usr/local/binC:\\python38 等中找到的解譯器。

注意:選取的解譯器可能與終端機中 python 所參考的解譯器不同。

如果 Visual Studio Code 無法自動找到您的解譯器,您可以手動指定解譯器

擴充功能尋找環境的位置

擴充功能會自動在下列位置中尋找解譯器,且沒有特定順序

  • 標準安裝路徑,例如 /usr/local/bin/usr/sbin/sbinc:\\python36 等。
  • 直接位於工作區 (專案) 資料夾底下的虛擬環境。
  • 位於 python.venvPath 設定所識別資料夾中的虛擬環境 (請參閱一般 Python 設定),其中可包含多個虛擬環境。擴充功能會在 venvPath 的第一層子資料夾中尋找虛擬環境。
  • 位於 virtualenvwrapper~/.virtualenvs 資料夾中的虛擬環境。
  • pyenvPipenvPoetry 建立的解譯器。
  • 位於 WORKON_HOME (由 virtualenvwrapper 使用) 所識別路徑中的虛擬環境。
  • conda env list 找到的 Conda 環境。選取後,沒有解譯器的 Conda 環境將會安裝一個解譯器。
  • 在工作區資料夾下的 direnv.direnv 資料夾中安裝的解譯器。

環境和終端機視窗

在使用 Python: 選取解譯器 之後,當您以滑鼠右鍵按一下檔案並選取 Python: 在終端機中執行 Python 檔案 時,會套用該解譯器。當您使用 終端機: 建立新終端機 命令時,也會自動啟用環境,除非您將 python.terminal.activateEnvironment 設定變更為 false

請注意,從已啟用特定 Python 環境的 Shell 啟動 VS Code 不會自動在預設整合式終端機中啟用該環境。

注意:如果 PowerShell 設定為整合式 Shell,則無法在整合式終端機中自動啟用 conda 環境。請參閱整合式終端機 - 終端機設定檔,以了解如何變更 Shell。

使用 Python: 選取解譯器 命令變更解譯器不會影響已開啟的終端機面板。因此,您可以在分割的終端機中啟用個別環境:選取第一個解譯器、為其建立終端機、選取不同的解譯器,然後使用終端機標題列中的 [分割] 按鈕 (⌘\ (Windows、Linux Ctrl+Shift+5))。

選擇偵錯環境

根據預設,偵錯工具會使用透過 Python 擴充功能選擇的 Python 解譯器。但是,如果在 launch.json 的偵錯組態中指定了 python 屬性,則會優先使用該屬性。如果未定義此屬性,則會回復為使用為工作區選取的 Python 解譯器路徑。

如需偵錯組態的詳細資訊,請參閱偵錯組態

環境變數

環境變數定義檔

環境變數定義檔是一個文字檔,其中包含 environment_variable=value 形式的索引鍵/值組,並使用 # 進行註解。不支援多行值,但允許參考先前定義的環境變數。環境變數定義檔可用於偵錯和工具執行 (包括程式碼檢查器、格式器、IntelliSense 和測試工具) 等案例,但不適用於終端機。

注意:環境變數定義檔不一定是跨平台的。例如,雖然 Unix 在環境變數中使用 : 做為路徑分隔符號,但 Windows 使用 ;。作業系統差異沒有標準化,因此您需要確定任何環境定義檔都使用與您的作業系統相容的值。

根據預設,Python 擴充功能會在目前的工作區資料夾中尋找並載入名為 .env 的檔案,然後套用這些定義。此檔案由使用者設定中的預設項目 "python.envFile": "${workspaceFolder}/.env" 識別 (請參閱一般 Python 設定)。您可以隨時變更 python.envFile 設定以使用不同的定義檔。

注意:並非在所有環境變數可用的情況下都會使用環境變數定義檔。除非 Visual Studio Code 文件另有說明,否則這些只會影響某些情況,如其定義所示。例如,擴充功能在解析設定值時不會使用環境變數定義檔。

偵錯組態也包含 envFile 屬性,其預設值也是目前工作區中的 .env 檔案 (請參閱偵錯 - 設定組態選項)。此屬性可讓您輕鬆設定偵錯用途的變數,以取代預設 .env 檔案中指定的變數。

例如,在開發 Web 應用程式時,您可能會想要輕鬆地在開發和生產伺服器之間切換。您可以針對每個伺服器使用個別的定義檔,而不用將不同的 URL 和其他設定直接編碼到應用程式中。例如

dev.env 檔案

# dev.env - development configuration

# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/

# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/dev
MYPROJECT_DBUSER=devadmin
MYPROJECT_DBPASSWORD=!dfka**213=

prod.env 檔案

# prod.env - production configuration

# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/

# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/
MYPROJECT_DBUSER=coreuser
MYPROJECT_DBPASSWORD=kKKfa98*11@

然後,您可以將 python.envFile 設定設定為 ${workspaceFolder}/prod.env,然後將偵錯組態中的 envFile 屬性設定為 ${workspaceFolder}/dev.env

注意:當使用多種方法指定環境變數時,請注意優先順序。在 launch.json 檔案中定義的所有 env 變數都會覆寫 .env 檔案中包含的變數,這些變數由 python.envFile 設定 (使用者或工作區) 指定。同樣地,在 launch.json 檔案中定義的 env 變數會覆寫在 launch.json 中指定的 envFile 中定義的環境變數。

PYTHONPATH 變數的使用

PYTHONPATH 環境變數會指定 Python 解譯器應尋找模組的其他位置。在 VS Code 中,PYTHONPATH 可以透過終端機設定 (terminal.integrated.env.*) 和/或在 .env 檔案中設定。

當使用終端機設定時,PYTHONPATH 會影響使用者在終端機中執行的任何工具,以及擴充功能針對使用者執行的任何動作 (透過終端機路由傳送,例如偵錯)。但是,在這種情況下,當擴充功能執行未透過終端機路由傳送的動作時,例如使用程式碼檢查器或格式器,則此設定不會對模組查閱產生影響。

後續步驟

  • 編輯程式碼 - 了解 Python 的自動完成、IntelliSense、格式化和重構。
  • 偵錯 - 了解如何在本地和遠端偵錯 Python。
  • 測試 - 設定測試環境,以及探索、執行和偵錯測試。
  • 設定參考 - 探索 VS Code 中與 Python 相關的完整設定範圍。

更多 Python 資源