现已推出!阅读 10 月份的新功能和修复。

WSL 中的远程开发

本教程将引导您完成启用 Windows Subsystem for Linux (WSL) 并使用 WSL 扩展在 WSL 中运行 Visual Studio Code 的步骤。

先决条件

您需要安装 Visual Studio Code

安装扩展

WSL 扩展使您能够在 Windows Subsystem for Linux (WSL) 中运行 Visual Studio Code。

安装 WSL 扩展

WSL extension

先决条件检查

安装 WSL 扩展后,您将在最左侧看到一个新的状态栏项目。

Remote Status bar item

远程状态栏项目可以快速显示 VS Code 运行的上下文(本地或远程),单击该项目将显示 WSL 扩展命令。

WSL extension commands

启用 WSL

Windows Subsystem for Linux (WSL) 是 Windows 10 上的一项可选功能。您可以通过 Windows 功能对话框或 PowerShell 启用它。

Windows 功能对话框

在 Windows 搜索栏中,键入“功能”以打开 **打开或关闭 Windows 功能** 对话框。向下滚动并选中 **Windows Subsystem for Linux**。

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 发行版。您可以使用 Store 应用程序,或在 Windows 搜索栏中搜索 Linux 发行版。选择您要安装的 Linux 发行版(例如 Ubuntu),然后按照提示操作。

select Ubuntu distro

选择 **安装**。

install Ubuntu

完成后,选择 **启动** 开始使用。这将打开一个 Linux 终端并完成安装。您需要创建用户 ID 和密码,因为您正在设置完整的 Linux 实例。现在您正在 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 开发堆栈,否则您无法运行或调试它们。而这与设置隔离的 Linux 实例并安装所有 Python 工具和运行时环境的目的背道而驰!

在 WSL 中运行

在 WSL 终端中,确保您位于 helloWorld 文件夹中,然后键入 'code .' 以启动 Visual Studio Code。'.' 参数告诉 VS Code 打开当前文件夹。如果您使用的是 Insiders 版本的 VS Code,则必须运行 '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

您将在 WSL 中启动一个新的 bash shell 实例,同样来自在 Windows 上运行的 VS Code。

提示:在状态栏的左下角,您可以看到您已连接到 **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)) 时,您将获得文件上的 linting 错误和警告。

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,方法是文件 > 关闭远程连接

恭喜

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

接下来,查看其他远程开发扩展。

或者通过安装 远程开发 扩展包来获取所有扩展。