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.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,則無法在 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 擴充功能找不到解譯器,它會發出警告。在 macOS 12.2 和更舊版本上,如果您使用 OS 安裝的 Python 解譯器,擴充功能也會發出警告,因為已知它有相容性問題。在這兩種情況下,您都可以將
python.disableInstallationCheck
設定為使用者設定中的true
,以停用這些警告。
Python: 選取解譯器 命令會顯示可用的全域環境、conda 環境和虛擬環境清單。(請參閱擴充功能尋找環境的位置區段以取得詳細資訊,包括這些環境類型之間的區別。) 例如,下圖顯示數個 Anaconda 和 CPython 安裝,以及位於工作區資料夾內的 conda 環境和虛擬環境 (env
)
注意:在 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
屬性中指定不同的路徑來覆寫此行為。請參閱選擇偵錯環境。
選取的解譯器版本會顯示在狀態列的右側。
當未選取任何解譯器時,狀態列也會反映此情況。
在這兩種情況下,按一下狀態列的這個區域都是 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 語言。