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

WSL 中的遠端開發

本教程將引導您完成啟用 適用於 Linux 的 Windows 子系統 (WSL) 的過程,並使用 WSL 擴充套件在 WSL 中執行 Visual Studio Code。

先決條件

您需要安裝 Visual Studio Code

安裝擴充套件

WSL 擴充套件使您能夠在適用於 Linux 的 Windows 子系統 (WSL) 中執行 Visual Studio Code。

安裝 WSL 擴充套件

WSL extension

先決條件檢查

安裝 WSL 擴充套件後,您會在最左側看到一個新的狀態列項。

Remote Status bar item

遠端狀態列項可以快速顯示 VS Code 正在哪個上下文中執行(本地或遠端),單擊該項將顯示 WSL 擴充套件命令。

WSL extension commands

啟用 WSL

適用於 Linux 的 Windows 子系統 (WSL) 是 Windows 10 的一項可選功能。您可以透過“Windows 功能”對話方塊或 PowerShell 來啟用它。

Windows 功能對話方塊

在 Windows 搜尋欄中,鍵入“功能”以開啟“開啟或關閉 Windows 功能”對話方塊。向下滾動並選中“適用於 Linux 的 Windows 子系統”。

Turn Windows features on and off dialog

選擇“確定”,系統將提示您重新啟動 Windows。

PowerShell

如果願意,您可以以管理員身份開啟 PowerShell,然後鍵入

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

命令執行後,系統將提示您重新啟動 Windows。

PowerShell prompt to restart

檢查 WSL

重新啟動 Windows 後,您可以透過開啟命令提示符並鍵入“wsl”來檢查您是否已啟用 WSL。

WSL check

WSL 已啟用,但您尚未安裝 Linux 發行版。

安裝 Linux 發行版

您可以從 Microsoft Store 安裝適用於 WSL 的 Linux 發行版。您可以使用商店應用,或者在 Windows 搜尋欄中搜索 Linux 發行版。選擇您要安裝的 Linux 發行版(例如 Ubuntu),然後按照提示操作。

select Ubuntu distro

選擇“安裝”。

install Ubuntu

完成後,選擇“啟動”即可開始。這將開啟一個 Linux 終端並完成安裝。由於您正在設定完整的 Linux 例項,因此需要建立使用者 ID 和密碼。現在,您可以在 Windows 上執行 Linux 了。

Linux terminal

Python 開發

如果尚未安裝 Python,請執行以下命令將 Python3 和 pip(Python 的包管理器)安裝到您的 Linux 安裝中。

sudo apt update
sudo apt install python3 python3-pip

為了驗證,請執行

python3 --version

從標準的“Hello World”應用開始。建立一個名為“helloWorld”的新資料夾,然後新增一個 Python 檔案,該檔案將在執行時列印一條訊息。

mkdir helloWorld && cd helloWorld
echo 'print("hello from python on ubuntu on windows!")' >> hello.py
python3 hello.py

在遠端 Linux 環境中(此 WSL 發行版在技術上是另一臺沒有 UI 的機器,碰巧在本地計算機上執行),您的開發工具和體驗非常有限。您可以在終端中執行 Vim 來編輯檔案,或者透過 \\wsl$ 掛載在 Windows 端編輯原始檔。

\wsl$ mount

此模型的問題在於,Python 執行時、pip 或任何 conda 包都沒有在 Windows 上安裝。

no Python on Windows

請記住,Python 安裝在 Linux 發行版中,這意味著如果您在 Windows 端編輯 Python 檔案,則無法執行或除錯它們,除非您在 Windows 上安裝相同的 Python 開發堆疊。這違背了設定包含所有 Python 工具和執行時的隔離 Linux 例項的目的!

在 WSL 中執行

在 WSL 終端中,確保您位於 helloWorld 資料夾中,然後鍵入 'code .' 以啟動 Visual Studio Code。'.' 引數告訴 VS Code 開啟當前資料夾。如果您使用的是 VS Code 的 Insiders 版本,則必須改用 'code-insiders .'

注意:如果此命令不起作用,您可能需要重新啟動終端,或者在安裝 VS Code 時未將其新增到路徑。

launch VS Code

您將看到的第一個訊息是關於“安裝 VS Code Server”的(c7d83e57… 數字是 VS Code Server 的版本,它與您剛剛安裝的客戶端工具相匹配)。VS Code 將在 Linux 端安裝一個小型伺服器,桌面 VS Code 將與之通訊。然後,該伺服器將在 WSL 中安裝和託管擴充套件,以便它們在 WSL 中安裝的工具和框架的上下文中執行。換句話說,您的語言擴充套件將針對在 WSL 中安裝的工具和框架執行,而不是針對在 Windows 端安裝的內容執行,這才是正確的開發體驗。

接下來發生的事情是 VS Code 將啟動並開啟 helloWorld 資料夾。您可能會看到一個快速通知,告知您 VS Code 正在連線到 WSL,並且可能會提示您允許訪問基於 Node.js 的伺服器。

installing vscode server

現在,當您將滑鼠懸停在 hello.py 上時,您將獲得正確的 Linux 路徑。

show hello.py Linux path

整合終端

執行“終端”>“新建終端”(⌃`(Windows、Linux Ctrl+`)以開啟新的終端例項。

new terminal in WSL

您將從在 Windows 上執行的 VS Code 啟動一個新的 bash shell 例項,同樣在 WSL 中。

提示:在狀態列的左下角,您可以看到您已連線到 **WSL: Ubuntu** 例項。

WSL extension Status bar

編輯和除錯

安裝 Python 擴充套件(及其他工具)

單擊 hello.py 以開啟進行編輯。系統將提示您推薦一個擴充套件,在這種情況下是安裝 Microsoft Python 擴充套件,這將為您提供豐富的編輯和除錯體驗。繼續選擇“安裝”,如有提示,請重新載入。

Python extension recommendation

為了證明該擴充套件已在 WSL 中安裝,請再次開啟“擴充套件”檢視(⇧⌘X(Windows、Linux Ctrl+Shift+X)。您將看到一個名為“WSL: Ubuntu – 已安裝”的部分,您可以在其中看到已在 WSL 端安裝的所有擴充套件。

WSL installed extensions

重新載入後,您還會收到一個提示,告知您尚未安裝 pylint linter。linter 用於在原始碼中顯示錯誤和警告。繼續選擇“安裝”。

pylint not installed notification

現在,當您編輯程式碼時,您將獲得豐富的著色和自動完成功能。

Python IntelliSense

當您儲存檔案時(⌘S(Windows、Linux Ctrl+S),您將看到有關該檔案的 lint 錯誤和警告。

pylint error

除錯

設定好工具後,讓我們更進一步。透過單擊行號左側的裝訂處,或將游標放在該行上並按 F9,在 hello.py 的第 1 行設定一個斷點。

set breakpoint

現在,按 F5 執行您的應用程式。系統將詢問您如何執行應用程式,由於這是一個簡單檔案,請選擇“Python 檔案”。

select debug configuration

應用程式將啟動,您將命中斷點。您可以檢查變數、建立監視並導航呼叫堆疊。

F10 進行單步除錯,您將在除錯控制檯中看到 print 語句的輸出。

VS Code debug view

您將獲得 Visual Studio Code 的完整開發體驗,可以使用安裝在 WSL 中的 Linux 例項。

如果您想在 WSL 中開啟另一個資料夾,請開啟“檔案”選單並選擇“開啟資料夾”。您將看到一個用於 Linux 檔案系統的最小檔案和資料夾導航器,而不是 Windows 檔案系統。

open folder navigator

如果您想切換回 Windows,請選擇“顯示本地”選項,您將看到標準的 Windows 檔案開啟對話方塊。

結束 WSL 連線

您可以透過“檔案”>“關閉遠端連線”來結束在 WSL 中的會話,並返回到本地執行 VS Code。

恭喜

恭喜,你已成功完成本教程!

接下來,檢視其他遠端開發擴充套件。

或者透過安裝遠端開發擴充套件包獲取所有這些擴充套件。

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