現已釋出!閱讀關於 11 月新增功能和修復的內容。

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: Create Environment命令,然後選擇它。

該命令會顯示環境型別列表: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 環境。我們建議您在 conda 環境中安裝 Python 直譯器,否則在選擇環境後會為您安裝一個。例如,以下命令建立了一個名為 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: Select Interpreter視窗右上角的重新整理圖示;否則,您可能找不到該環境。

    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))並執行Preferences: Open User Settings。然後設定 python.condaPath(位於使用者設定的 Python 擴充套件部分),並提供正確的路徑。

使用 Python 直譯器

選擇和啟用環境

Python 擴充套件會嘗試查詢並選擇它認為最適合工作區的環境。如果您希望選擇特定環境,請使用命令面板⇧⌘P (Windows, Linux Ctrl+Shift+P))中的Python: Select Interpreter命令。

Python: Select Interpreter command

注意:如果 Python 擴充套件找不到直譯器,它會發出警告。在 macOS 12.2 及更早版本上,如果您使用的是作業系統安裝的 Python 直譯器,該擴充套件也會發出警告,因為它已知存在相容性問題。在這兩種情況下,您都可以透過在使用者設定中將 python.disableInstallationCheck 設定為 true 來停用這些警告。

Python: Select Interpreter 命令會顯示可用的全域性環境、conda 環境和虛擬環境列表。(有關詳細資訊,包括這些環境型別的區別,請參閱擴充套件程式查詢環境的位置部分。)例如,下圖顯示了幾個 Anaconda 和 CPython 安裝,以及一個 conda 環境和一個位於工作區資料夾內的虛擬環境(env)。

List of interpreters

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

如果您在 VS Code 中打開了資料夾或工作區,然後從列表中選擇了一個直譯器,Python 擴充套件會將其資訊內部儲存起來。這確保了在您重新開啟工作區時會使用相同的直譯器。

所選環境由 Python 擴充套件用於執行 Python 程式碼(使用Python: Run Python File in Terminal命令),在編輯器中開啟 .py 檔案時提供語言服務(自動完成、語法檢查、程式碼檢查、格式化等),以及使用Terminal: Create New Terminal命令開啟終端。在後一種情況下,VS Code 會自動啟用所選環境。

提示:要阻止自動啟用所選環境,請將 "python.terminal.activateEnvironment": false 新增到您的 settings.json 檔案中(它可以放在現有設定的同級位置)。

提示:如果啟用命令生成訊息“Activate.ps1 未數字簽名。您無法在當前系統上執行此指令碼。”,那麼您需要暫時更改 PowerShell 執行策略以允許執行指令碼(請參閱 PowerShell 文件中的關於執行策略):Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

注意:預設情況下,VS Code 在除錯程式碼時使用為工作區選擇的直譯器。您可以透過在 launch.json 的除錯配置中指定不同的路徑來覆蓋此行為。請參閱選擇除錯環境

所選直譯器的版本將顯示在狀態列的右側。

Status Bar showing a selected interpreter

狀態列還會反映未選擇直譯器的情況。

Status bar showing no selected Python interpreter

在這兩種情況下,單擊狀態列的此區域都是Python: Select Interpreter命令的便捷快捷方式。

提示:如果您在 VS Code 識別虛擬環境方面遇到任何問題,請提交問題,以便我們幫助確定原因。

手動指定直譯器

如果 VS Code 未自動找到您想使用的直譯器,您可以瀏覽檔案系統查詢直譯器或手動提供其路徑。

您可以透過執行Python: Select Interpreter命令並選擇直譯器列表頂部的Enter interpreter path...選項來執行此操作。

Enter interpreter path option on the interpreters list

然後,您可以直接在文字框中輸入 Python 直譯器的完整路徑(例如,“.venv/Scripts/python.exe”),或者您可以選擇Find...按鈕並在檔案系統中瀏覽以找到您要選擇的 python 可執行檔案。

Enter path or browse for an interpreter

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

注意:在為工作區選擇瞭解釋器後,對 python.defaultInterpreterPath 設定的更改將不會被採納;一旦為工作區選擇了初始直譯器,對該設定的任何更改都將被忽略。

此外,如果您想為所有 Python 應用程式設定預設直譯器,可以在使用者設定中手動新增 python.defaultInterpreterPath 的條目。為此,請開啟命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))並輸入Preferences: Open User Settings。然後設定 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 的第一級子資料夾中查詢虛擬環境。
  • 位於 ~/.virtualenvs 資料夾中的虛擬環境,用於virtualenvwrapper
  • pyenvPipenvPoetry 建立的直譯器。
  • 位於 WORKON_HOME 標識的路徑中的虛擬環境(由virtualenvwrapper使用)。
  • conda env list 找到的 Conda 環境。沒有直譯器的 Conda 環境將在選擇時為其安裝一個。
  • 位於工作區資料夾下 .direnv 資料夾中的直譯器,用於direnv

環境和終端視窗

使用Python: Select Interpreter後,該直譯器將在右鍵單擊檔案並選擇Python: Run Python File in Terminal時應用。除非您將 python.terminal.activateEnvironment 設定更改為 false,否則在使用Terminal: Create New Terminal命令時,環境也會自動啟用。

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

注意:如果 PowerShell 被設定為整合 shell,conda 環境將無法在整合終端中自動啟用。有關如何更改 shell,請參閱整合終端 - 終端配置檔案

使用Python: Select Interpreter命令更改直譯器不會影響已開啟的終端面板。因此,您可以在拆分終端中啟用不同的環境:選擇第一個直譯器,為它建立一個終端,選擇另一個直譯器,然後使用終端標題欄中的拆分按鈕(⌘\ (Windows, Linux Ctrl+Shift+5))。

選擇除錯環境

預設情況下,偵錯程式將使用透過 Python 擴充套件選擇的 Python 直譯器。但是,如果 launch.json 的除錯配置中指定了 python 屬性,則該屬性具有優先權。如果未定義此屬性,則會回退到使用為工作區選擇的 Python 直譯器路徑。

有關除錯配置的更多詳細資訊,請參閱除錯配置

環境變數

環境變數定義檔案

環境變數定義檔案是包含 environment_variable=value 形式的鍵值對的文字檔案,其中 # 用於註釋。不支援多行值,但允許引用先前定義的環境變數。環境變數定義檔案可用於除錯和工具執行(包括 linter、格式化程式、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 會影響使用者在終端中執行的任何工具,以及擴充套件程式為使用者執行的任何透過終端路由的操作(例如除錯)。但是,在這種情況下,當擴充套件程式執行未透過終端路由的操作(例如使用 linter 或 formatter)時,此設定不會影響模組查詢。

後續步驟

  • 編輯程式碼 - 瞭解 Python 的自動完成、IntelliSense、格式設定和重構。
  • 除錯 - 瞭解如何在本地和遠端除錯 Python。
  • 測試 - 配置測試環境以及發現、執行和除錯測試。
  • 設定參考 - 探索 VS Code 中所有與 Python 相關的設定。

更多 Python 資源

© . This site is unofficial and not affiliated with Microsoft.