🚀 在 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 為基礎的 OS;在這種情況下,請安裝 python3-pip)。
venv 可讓您管理不同專案的個別套件安裝,並且預設會隨附 Python 3 安裝 (除非您使用的是以 Debian 為基礎的 OS;在這種情況下,請安裝 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,則 conda 環境無法在 VS Code 整合式終端機中自動啟用。若要變更 Shell,請參閱整合式終端機 - 終端機設定檔

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

使用 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.defaultInterpreterPath,它位於使用者設定的 Python 擴充功能區段中,並使用適當的直譯器。

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

如果尚未指定直譯器,則 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 資源