VS Code 中的 Python 環境
Python 中的“環境”是 Python 程式執行的上下文,由直譯器和任意數量的已安裝包組成。
注意:如果您想更熟悉 Python 程式語言,請查閱更多 Python 資源。
Python 環境的型別
全域性環境
預設情況下,任何安裝的 Python 直譯器都在其自己的全域性環境中執行。例如,如果您在新終端中執行python
、python3
或py
(取決於您安裝 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: 建立環境命令,然後選擇它。
該命令顯示環境型別列表:Venv或Conda。
如果您使用 Venv 建立環境,該命令會顯示可用作新虛擬環境基礎的直譯器列表。
如果您使用 Conda 建立環境,該命令會顯示可用於您專案的 Python 版本列表。
選擇所需的直譯器或 Python 版本後,通知將顯示環境建立進度,並且環境資料夾將出現在您的工作區中。
注意:該命令還將安裝專案資料夾中 requirements/dependencies 檔案(例如
requirements.txt
、pyproject.toml
或environment.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 中將顯示一個提示,允許您為工作區選擇它。
提示:請務必更新您的原始碼管理設定,以防止意外提交您的虛擬環境(例如在
.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: 選擇直譯器視窗右上角的重新整理圖示;否則您可能無法在那裡找到該環境。
-
為了確保從 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 擴充套件部分中的python.condaPath
設定為適當的路徑。
使用 Python 直譯器
選擇並激活環境
Python 擴充套件會嘗試查詢並選擇它認為最適合工作區的環境。如果您希望選擇特定環境,請從命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))使用Python: 選擇直譯器命令。
注意:如果 Python 擴充套件未找到直譯器,它會發出警告。在 macOS 12.2 及更早版本上,如果您使用 OS 安裝的 Python 直譯器(因為它已知存在相容性問題),該擴充套件還會發出警告。在任何一種情況下,您都可以透過在使用者設定中將
python.disableInstallationCheck
設定為true
來停用這些警告。
Python: 選擇直譯器命令顯示可用全域性環境、conda 環境和虛擬環境的列表。(有關詳細資訊,包括這些環境型別之間的區別,請參閱擴充套件查詢環境的位置部分。)例如,下圖顯示了幾個 Anaconda 和 CPython 安裝以及一個 conda 環境和一個位於工作區資料夾中的虛擬環境(env
)
注意:在 Windows 上,VS Code 可能需要一些時間才能檢測到可用的 conda 環境。在此過程中,您可能會在環境路徑之前看到“(cached)”。該標籤表示 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
屬性中指定不同的路徑來覆蓋此行為。請參閱選擇除錯環境。
選定的直譯器版本將顯示在狀態列的右側。
狀態列也反映了未選擇直譯器的情況。
在任何一種情況下,單擊狀態列的此區域都是Python: 選擇直譯器命令的便捷快捷方式。
提示:如果您在 VS Code 識別虛擬環境方面遇到任何問題,請提交問題,以便我們幫助確定原因。
手動指定直譯器
如果 VS Code 未自動找到您要使用的直譯器,您可以在檔案系統上瀏覽直譯器或手動提供其路徑。
您可以透過執行Python: 選擇直譯器命令並選擇直譯器列表頂部顯示的輸入直譯器路徑...選項來執行此操作
然後,您可以直接在文字框中輸入 Python 直譯器的完整路徑(例如,“.venv/Scripts/python.exe”),或者您可以選擇查詢...按鈕並瀏覽您的檔案系統以找到您希望選擇的 python 可執行檔案。
如果您想手動指定在首次開啟工作區時使用的預設直譯器,您可以為python.defaultInterpreterPath
設定建立或修改一個條目。
注意:為工作區選擇直譯器後,對
python.defaultInterpreterPath
設定的更改不會生效;一旦為工作區選擇初始直譯器,對該設定的任何更改都將被忽略。
此外,如果您想為所有 Python 應用程式設定預設直譯器,您可以在使用者設定中手動新增python.defaultInterpreterPath
的條目。為此,請開啟命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))並輸入首選項:開啟使用者設定。然後,將使用者設定的 Python 擴充套件部分中的python.defaultInterpreterPath
設定為適當的直譯器。
擴充套件如何自動選擇環境
如果未指定直譯器,則 Python 擴充套件會按照以下優先順序順序自動選擇版本最高的直譯器
- 直接位於工作區資料夾下的虛擬環境。
- 與工作區相關但全域性儲存的虛擬環境。例如,位於工作區資料夾外部的Pipenv或Poetry環境。
- 全域性安裝的直譯器。例如,在
/usr/local/bin
、C:\\python38
等中找到的直譯器。
注意:選擇的直譯器可能與終端中
python
所指的直譯器不同。
如果 Visual Studio Code 未自動找到您的直譯器,您可以手動指定直譯器。
擴充套件查詢環境的位置
擴充套件會自動在以下位置查詢直譯器,不分先後順序
- 標準安裝路徑,例如
/usr/local/bin
、/usr/sbin
、/sbin
、c:\\python36
等。 - 直接位於工作區(專案)資料夾下的虛擬環境。
- 位於由
python.venvPath
設定標識的資料夾中的虛擬環境(請參閱通用 Python 設定),該資料夾可以包含多個虛擬環境。擴充套件在venvPath
的一級子資料夾中查詢虛擬環境。 - 位於virtualenvwrapper的
~/.virtualenvs
資料夾中的虛擬環境。 - 由pyenv、Pipenv和Poetry建立的直譯器。
- 位於
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 資源
- VS Code 中的 Python 入門 - 瞭解如何在 VS Code 中編輯、執行和除錯程式碼。
- 虛擬環境和包 (Python.org) - 瞭解有關虛擬環境和包的更多資訊。
- 安裝 Python 模組 (Python.org) - 瞭解如何安裝 Python 模組。
- Python 教程 (Python.org) - 瞭解有關 Python 語言的更多資訊。